Autor Beitrag
volkerb.
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.04.07 13:43 
Hallo!!!

Ich beschäftige mich seit einigen Tagen mit Delphi und habe jetzt mein erstes Problem wo ich nich weiterkomme.
Ich habe mir aus dem Internet eine Aufgabe heruasgesucht (Gewichtsrechner) und komme jetzt leider nicht weiter.
Es soll je nachdem ob man männlich oder weiblich ist ein bestimmtes idealgewicht ausgerechnet werden und danach soll verglichen werden ob man Idealgewicht hat oder nicht.
Hier ist der Quelltext den ich bis jetzt habe.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure TForm1.b_startClick(Sender: TObject);
var groese, gewicht, mideal, wideal, x, y :real;
begin

gewicht := strtofloat(e_gewicht.text);
groese := strtofloat(e_groese.text);
mideal := (groese -100) * 0.95;
wideal := (groese - 100) * 0.90;

if r_sex.ItemIndex = 0 then
  begin
  x := (groese - 100) * 0.95;
  end

else
  begin
  y := (groese - 100) * 0.90;
  end

if (x = Mideal) or (y=wideal) then
  begin
  showmessage('sie haben..');
  end
else
  begin
  showmessage('sie haben kein...');
  end


Wenn ich das Programm starte, meine Größe und Gewicht eingeben und dann auf Start klicke, kommt eine Fehlermeldung.

Seht ihr vielleicht einen (von vielen) Fehlern ^^

Dankeschön jetzt schon einmal für die Hilfe!!!


Zuletzt bearbeitet von volkerb. am Di 03.04.07 14:20, insgesamt 1-mal bearbeitet
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Di 03.04.07 14:02 
Hallo!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if y := ideal then
  begin
  showmessage ('sie haben...');
  end
else
  begin
  showmessage('sie haben kein...');
end


Doppelpunkt entfernen, da es ein Vergleich und keine Zuweisung ist :)

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 03.04.07 14:13 
Das kommt Mir doch sehr bekannt vor.
www.delphi-forum.de/viewtopic.php?t=71619

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
volkerb. Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.04.07 14:22 
Da hat wohl jemand das gleiche Problem wie ich^^
also ich habe den Quellcode jetzt noch etwas umgeändert (erster Beitrag editiert) aber es kommt eine Fehlermeldung wenn ich das Programm starten will.

[Error] Unit1.pas(57): Missing operator or semicolon

Wo fehlt dort ein Semikolon??
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Di 03.04.07 14:24 
Nach jedem end, außer vor dem end beim else

Alles klar? ^^

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
volkerb. Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.04.07 14:28 
ah cool...jetzt muss ich es nur noch hinbekommen dass er untergewicht und übergewicht anzeigt und einen unterscheid von +-2% mit einrechnet xD....ich glaube ich werde hier noch ein paar mal posten ^^
volkerb. Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.04.07 14:47 
Ich habe mir jetzt noch mal Gedanken über den Quellcode gemacht und hab ihn noch etwas verändert.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure TForm1.b_startClick(Sender: TObject);
var groese, gewicht, mideal, wideal, x, y :real;
begin

gewicht := strtofloat(e_gewicht.text);
groese := strtofloat(e_groese.text);
mideal := (groese -100) * 0.95;
wideal := (groese - 100) * 0.90;

if r_sex.ItemIndex = 0 then
  begin
  mideal := x;
  end

else
  begin
  wideal := y;
  end ;

if (x < gewicht) or (y < gewicht) then
  begin
  showmessage('sie haben untergewicht');
  end ;
if (x>gewicht) or (y>gewicht) then
  begin
  showmessage('sie haben übergewicht');
  end  ;
if (x=gewicht) or (y=gewicht) then
  begin
  showmessage('sie haben idealgewicht');
  end;


ich bin mir aber nicht sicher ob er das idealgewicht so richtig ausrechnet^^
wenn ich es starte und gewicht und größe eingebe kommt jedenfalls nur "sie haben untergewicht".
habe ich mir hier jetzt völligen schwachsinn ausgedacht oder kann man das so schreiben?? xD
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Di 03.04.07 14:49 
wo belegst du denn x und y??? :shock:

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Di 03.04.07 14:53 
Hm, ich würd mal nen Grundlagenkurs/buch empfehlen. Die Zuweisungen sind falsch, die Vergleiche sowieso.

Einfach mal drüber nachdenken, was wohl passiert, wenn ich a den Wert von b zuweise. Und die Bedeutung von < und > solltest du auch nochmal nachschlagen.

_________________
Bravery calls my name in the sound of the wind in the night...
volkerb. Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.04.07 14:58 
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
procedure TForm1.b_startClick(Sender: TObject);
var groese, gewicht, mideal, wideal, x, y :real;
begin

gewicht := strtofloat(e_gewicht.text);
groese := strtofloat(e_groese.text);
mideal := (groese -100) * 0.95;
wideal := (groese - 100) * 0.90;

if r_sex.ItemIndex = 0 then
  begin
  mideal := (groese - 100) * 0.95;
  x      := mideal;
  end

else
  begin
  wideal := (groese - 100) * 0.90;
  y      := wideal;
  end ;

if (x = gewicht) or (y = gewicht) then
  begin
  showmessage('Sie haben Idealgewicht');
  end ;
[b]if (x > gewicht) or (y > gewicht) then
  begin
  showmessage('Sie haben Übergewicht')
  end;
if ( x < gewicht) or (y < gewicht) then
  begin
  showmessage('Sie haben Untergewicht')
  end;[/b]


so Quelltext noch mal umgeändert^^
bis auf den fett markierten bereich funktioniert alles...wenn ich den weglasse, dann zeigt er mit nur eine message wenn man genau idealgewicht hat. wenn ich den fetten teil jedoch dazu füge zeit er IMMER an die haben untergewicht UND sie haben übergewicht.
kann mir da einer helfen??

PS: ein buch habe ihc mir schon bestellt ist aber noch nicht da und deswegen fange ich jetzt so schon einmal an ^^
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Di 03.04.07 15:03 
zum einen wäre es wohl sinnvoll, unten auch mit else zu arbeiten. Zum anderen ist immer nur entweder x oder y befüllt, es wird aber immer beides verglichen. Solltest dich mal fragen, wozu du da zwei Variablen benutzt, eigentlich kannst du auf beide verzichten ( richtige nerds, denen Tippen zuviel arbeit ist, verzichten ganz auf die Variablen :)

_________________
Bravery calls my name in the sound of the wind in the night...
volkerb. Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.04.07 15:14 
ich find mit den variablen übersichtlicher ^^...und da ich ein noob und kein nerd bin darf ich das auch xD


wie kann ich das da unten denn mit if und else machen??
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Di 03.04.07 15:26 
na genau wie paar Zeilen drüber auch.

_________________
Bravery calls my name in the sound of the wind in the night...
volkerb. Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.04.07 15:33 
ja aber unten gibt es ja 3 möglichkeiten

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
if (x = gewicht) or (y = gewicht) then
  begin
  showmessage('Sie haben Idealgewicht');
  end ;
if (x > gewicht) or (y > gewicht) then
  begin
  showmessage('Sie haben Übergewicht');
  end
else
  begin
  showmessage('Sie haben Untergewicht');
  end;


so??^^
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Di 03.04.07 15:37 
du kannst beliebig oft mit else verketten. Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
if a < b then
begin
...
end
else if b > a then
begin
...
end
else if b + a > 0 then
begin
...
end

...

_________________
Bravery calls my name in the sound of the wind in the night...
volkerb. Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.04.07 15:52 
und das nächste probelm ^^ (ich glaub das dauert noch den ganzen tag )

delphi berechnet immer BEIDE gewicht, egal was ich oben in der radiogroup auswähle.
wie kann ich das verändern??
volkerb. Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 04.04.07 09:25 
DANKESCHÖN an alle die so viel geduld hatten ^^

habs endlich hinbekommen....
...mein nächster post lässt aber nicht lange auf sich warten ;)

MfG Volker