Entwickler-Ecke
Sonstiges (Delphi) - Probleme bei > (größer als) < (kleiner als)
arminho - Mo 07.03.05 14:56
Titel: Probleme bei > (größer als) < (kleiner als)
hallo leute, habe ein Problem mit einem Vergleich zweier Zahlen...
unswar sollen bestimmte Bilder bei bestimmten Situationen geladen werden.
wenn der inhalt von label 12 größer ist (die zahl) als der von label 11 dann soll lev5.bmp geladen werden, wenn 12 kleiner ist als 11 soll lev1.bmp geladen werden und wenn label 11 und 12 gleich sind soll lev3.bmp geladen werden...
soweit so gut. ich glaube ich habe es auch richtig formuliert im code (unten könnt ihr es mal prüfen)
Nun ist das Problem aber: Es funktioniert alles, nur wenn 12 kleiner ist als 11 zeigt er mir trotzdem lev3.bmp an...nur bei einem unterschied von 100 zeigt er es richtig an, wenn der unterschied größer ist, zeigt er eben lev3 an...
kann einer helfen bitte?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm8.Label8Click(Sender: TObject); begin label11.caption:=IntToStr(StrToInt(edit5.text) + StrToInt(edit6.text) + StrToInt(edit7.text) + StrToInt(edit8.text)); label12.caption:=IntToStr(StrToInt(edit1.text) + StrToInt(edit2.text) + StrToInt(edit3.text) + StrToInt(edit4.text)); image1.visible:=true; if label12.caption>label11.caption then image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev5.bmp'); if label12.caption=label11.caption then image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev3.bmp'); if label12.caption<label11.caption then image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev1.bmp'); end; |
wdbee - Mo 07.03.05 14:59
Die Eigenschaft Caption ist ein String und keine Zahl. StrToInt(Caption) ist wohl dass, was du meinst.
Tino - Mo 07.03.05 15:00
Vor dem Vergleichen solltest du den Text in eine Zahl umwandeln (StrToInt).
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm8.Label8Click(Sender: TObject); begin label11.caption:=IntToStr(StrToInt(edit5.text) + StrToInt(edit6.text) + StrToInt(edit7.text) + StrToInt(edit8.text)); label12.caption:=IntToStr(StrToInt(edit1.text) + StrToInt(edit2.text) + StrToInt(edit3.text) + StrToInt(edit4.text)); image1.visible:=true;
if StrToInt (label12.caption) > StrToInt (label11.caption) then image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev5.bmp') else if StrToInt (label12.caption) = StrToInt (label11.caption) then image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev3.bmp') else image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev1.bmp'); end; |
arminho - Mo 07.03.05 15:00
moment jetzt...wo genau? :?
WeBsPaCe - Mo 07.03.05 15:01
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm8.Label8Click(Sender: TObject); begin label11.caption:=IntToStr(StrToInt(edit5.text) + StrToInt(edit6.text) + StrToInt(edit7.text) + StrToInt(edit8.text)); label12.caption:=IntToStr(StrToInt(edit1.text) + StrToInt(edit2.text) + StrToInt(edit3.text) + StrToInt(edit4.text)); image1.visible:=true; if StrToInt(label12.caption)>StrToInt(label11.caption) then image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev5.bmp'); if StrToInt(label12.caption)=StrToInt(label11.caption) then image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev3.bmp'); if StrToInt(label12.caption)<StrToInt(label11.caption) then image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev1.bmp'); end; |
Sieht dann so ^^ aus.. ;)
Tino - Mo 07.03.05 15:02
arminho hat folgendes geschrieben: |
moment jetzt...wo genau? :? |
S. meinen Beitrag.
WeBsPaCe - Mo 07.03.05 15:03
Tino hat folgendes geschrieben: |
S. meinen Beitrag. |
Oder meinen... :rofl:
arminho - Mo 07.03.05 15:03
ok habs jetzt gesehn..danke für eure hilfe
arminho - Mo 07.03.05 15:07
noch ne frage wo ich grad dabei bin...
unswar wird jetzt einfach geprüft ob das eine größer ist als das andere...kann ich ihm aber auch sagen, dass wenn es um 50% größer ist als das andere dann soll er lev3 laden wenn es aber 80% größer ist dann lev5 etc.
also bei einer bestimmten Varianz der Zahlen verschiedene bilder laden.
oder wenn es nicht mit Prozent geht dann wenigstens z.B. wenn es um 1000 größer ist...oder um 500 kleiner
WeBsPaCe - Mo 07.03.05 15:12
Da musst du einfach noch n bisschen Mathe mit reinstopfen... ;)
z.B. macht
Delphi-Quelltext
1:
| if StrToInt(Label1.Caption) > StrToInt(Label2.Caption)*(80/100) then (..) |
dann das was dahinter steht, wenn Label1 größer ist als 80% von Label2.
Und so weiter... ;)
arminho - Mo 07.03.05 15:14
ah ok, wusste ich nicht dass man das so leicht dahinter schreiben kann...interessant 8)
zemy - Mo 07.03.05 17:54
Ist dann vieleicht vorteilhafter, wenn du das vorher in Variablen zwirbelst...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm8.Label8Click(Sender: TObject); Var L1,L2:integer begin label11.caption:=IntToStr(StrToInt(edit5.text) + StrToInt(edit6.text) + StrToInt(edit7.text) + StrToInt(edit8.text)); label12.caption:=IntToStr(StrToInt(edit1.text) + StrToInt(edit2.text) + StrToInt(edit3.text) + StrToInt(edit4.text)); image1.visible:=true;
L1:=StrToInt (label11.caption); L2:=StrToInt (label12.caption);
if L2 > L1 then image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev5.bmp') else if L1 = L2 then image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName)+'bilder\lev3.bmp') else if L1 < L2*0.875+3 then end; |
Braucht weniger Rechenzeit, als wenn du immer von Str zu integer umrechnest und es ist besser lesbar...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!