Autor |
Beitrag |
xilos
      
Beiträge: 59
|
Verfasst: Do 30.11.06 17:26
hi...
....und wieder zum kalorienrechner ^^
und zwar funktioniert jetzt fast alles wunderbar...außer das er komischer weiße etwas ausrechnet obwohl er das gar nicht soll ^^
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: 34: 35: 36:
| procedure TForm1.Button1Click(Sender: TObject); var zahl1 : integer; var bonus: integer; begin
if (edit1.text='0') or (radiogroup1.itemindex=-1) then showmessage ('Sie haben die Angaben vergessen!!!')
else edit2.text := '0' ;
edit3.Text := '0' ;
zahl1 := StrToint (edit1.text);
edit2.text := intToStr (zahl1*24);
if RadioGroup1.ItemIndex = 0 then bonus := StrToInt(Edit2.Text) div 3;
if RadioGroup1.ItemIndex = 1 then bonus := StrToInt(Edit2.Text) * 2 div 3;
if RadioGroup1.ItemIndex = 2 then bonus := StrToInt(Edit2.Text) ;
edit3.text := inttostr((strtoint(Edit3.text)*24)+ bonus);
Label4.Caption := Format('Sie benütigen am Tag %d Kilokalorien', [StrToIntDef(Edit2.Text, 0) + StrToIntDef(Edit3.Text, 0) ]);
end;
end. |
das ist der quelltext...
wenn ich jetzt im ersten editfeld die null drin lasse dann müsste er eigentlich nur eine fehlermeldung ausspucken...er zeigt jedoch im edtifeld 3 irgendeine zahl an von der ich keine ahnung habe wo die her kommt :S
könnt ihr mir helfen?? findet ihr vll den fehler??
thx jetzt schon mal Moderiert von Christian S.: Topic aus VCL (Visual Component Library) verschoben am Do 30.11.2006 um 16:53
Einloggen, um Attachments anzusehen!
|
|
xilos 
      
Beiträge: 59
|
Verfasst: Do 30.11.06 17:27
entschuldigung ein kleiner aber wichtiger fehler...
wenn ich die null drin eine zahl bei gewicht eingebe und keinen radiobutton anklicke kommt unten eine zahl ^^ (ich weiß immer noch nicht warum)
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: Do 30.11.06 17:33
Tippe mal, daß bei Edit1.Text :='0' die zugehörige Zahl1 nicht gelöscht, d.h. explizit auf Null gesetzt wird. Also steht im Fehlerfall wahrscheinlich die zuletzt verwendete Zahl drin.
Edit: War wohl nicht der Fehler, mal wieder Schnellschuß. Ich denke mal, daß der Index in einer einmal aktivierten RadioGroup eigentlich nicht mehr -1 sein kann, da immer ein Button aktiviert ist. (Oder setzt Du das irgendwo auf -1 ?) in dem Fall wird die Fehlerroutine ja nie mehr angesprungen.
Zuletzt bearbeitet von aim65 am Do 30.11.06 17:42, insgesamt 1-mal bearbeitet
|
|
xilos 
      
Beiträge: 59
|
Verfasst: Do 30.11.06 17:35
was kann ich denn noch anstatt der 0 nehmen damit das feld immer wieder gelöscht wird und das mit der if funktion funktioniert???
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: Do 30.11.06 17:44
 guck mal mein Edit - war ein bißchen zu langsam...
|
|
xilos 
      
Beiträge: 59
|
Verfasst: Do 30.11.06 17:47
jaja hab ich gesehn ^^ aber ich muss das in der if funktion ja auf -1 setzen weil die fehlermeldung ja nur kommen soll, wenn kein radiobutton aus der group angewählt ist ^^ oder gibts da etwa noch ne andre möglichkeit??
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 30.11.06 17:49
was ist wenn in deinem edit 00 oder 00000 oder 0000000000000 steht ? was machste dann ?
mfg
|
|
xilos 
      
Beiträge: 59
|
Verfasst: Do 30.11.06 17:51
hmm dann hab ich ein prob ^^
deswegen frag ich ja x) kennt da einer ne andre lösung??
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: Do 30.11.06 17:57
Also, ich kenne nur die Tatsache, daß in einer RadioGroup immer ein Button gesetzt ist. Bist Du sicher, daß Du den Index wirklich in dem Programm auf -1 gesetzt hast, bevor die Möglichkeit mit Button1.Click gegeben ist?
Ich würde einfach nach einer erfolgreichen Berechnung einen "Start"-Button oder so nehmen, der alle alten Eingaben löscht und dann erst wieder neue Eingaben erlaubt. Sonst fällt mir auf die Schnelle nix ein. Muß jetzt leider erst mal weg.
|
|
xilos 
      
Beiträge: 59
|
Verfasst: Do 30.11.06 18:16
dankeschön ich habe den itemindexx einfach auf 0 gestellt ^^
das war glaub ich die einfachste lösung..danke für den tip aim ^^
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 30.11.06 18:23
xilos hat folgendes geschrieben: | hmm dann hab ich ein prob ^^
deswegen frag ich ja x) kennt da einer ne andre lösung?? |
Delphi-Quelltext 1:
| if strtoint(edit1.text) = 0 then |
|
|
Dragonclaw
      
Beiträge: 196
Windows Vista
Delphi 7 Prof.
|
Verfasst: Do 30.11.06 18:42
du hast vergessen, ein Begin NACH dem Else einzufügen, weil er soll ja alles was danach kommt nur machen wenn die Angaben vollständig sind. Einfach noch ein End; am Ende dran packen. Fertig
Hoffe ich wenigsten doch  .
|
|