| Autor |
Beitrag |
Bioman
Hält's aus hier
Beiträge: 6
|
Verfasst: So 30.08.09 20:13
Hallo
ich habe folgende Probleme :
Ich häng an einem Programm dran, welches mir als eine Art Rechner dienen soll. Teilweise läuft es auch, aber als ich vorhin weiterprogrammiert hab, kamen die Fehlermeldungen, dass 3 meiner Variablen (metall, kristall, deuterium) nicht initialisiert wurden und dass ich irgendwie eine ungültige Gleitkommaoperation hätte, die letzte Meldung kommt jedoch erst beim ausführen der .exe
Mein quellcode :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button10Click(Sender: TObject); var stufe,metall,kristall,deuterium : real; begin stufe := strtofloat (edit10.text); if RadioButton5.checked = true then metall := (power(1.5,stufe)*40); if RadioButton5.checked = true then kristall := (power(1.5,stufe)*10); if Radiobutton6.Checked = true then metall := (power(1.6,stufe)*30); if RadioButton6.checked = true then kristall := (power(1.6,stufe)*15); if Radiobutton7.checked = true then metall := (power(1.5,stufe)*150); if RadioButton7.checked = true then kristall := (power(1.5,stufe)*50);
edit7.text := floattostr (trunc(metall)); edit8.Text := floattostr (trunc(kristall)); edit9.Text := floattostr (trunc(deuterium)) end; |
ich war schon so weit, dass die Anweisungen liefen von radiobutton 5-7, als ich dann jedoch weitergeschrieben hatte, kamen die fehlermeldungen oben, also löschte ich das neu geschriebene wieder und versuchte es nochmal aber nun waren die fehlermeldungen auch hier.
Ich hab aber auch noch eine Frage :
Wie bekomm ich es hin, dass ich unter eine if-funktion 2 oder 3 anweisungen bekomme ?? mit einfach 2 stück hinschreiben klappts nicht so wirklich
Danke für eure Hilfe
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 30.08.09 20:35
Hallo und  im Forum! Bioman hat folgendes geschrieben : | | dass 3 meiner Variablen (metall, kristall, deuterium) nicht initialisiert wurden |
Werden sie ja auch nur, wenn RadioButton5.checked exakt gleich true ist. Wobei der Vergleich so auch falsch ist.
Mehr dazu steht hier unter Anfängerfehler:
www.delphi-treff.de/...olean-werten/page/4/
Und warum das auch vollkommen unlogisch ist:
www.delphi-forum.de/....php?p=560637#560637
Richtig: Delphi-Quelltext 1: 2:
| if RadioButton5.Checked then ... | Aber auch dann wird die Variable nicht initialisiert, wenn der RadioButton nicht angeklickt ist.
Dann hast du da klammern zu viel: Delphi-Quelltext 1: 2: 3:
| metall := (power(1.5,stufe)*40); metall := Power(1.5, stufe) * 40; | Beides funktioniert meistens, aber nicht immer.
Bioman hat folgendes geschrieben : | | und dass ich irgendwie eine ungültige Gleitkommaoperation hätte |
Das wird vermutlich bei Power oder so auftreten, aber das müsstest du mit Debuggen näher untersuchen.
Bioman hat folgendes geschrieben : | Ich hab aber auch noch eine Frage :
Wie bekomm ich es hin, dass ich unter eine if-funktion 2 oder 3 anweisungen bekomme ?? mit einfach 2 stück hinschreiben klappts nicht so wirklich |
Delphi-Quelltext 1: 2: 3: 4: 5:
| if a then begin ... ... end; | Weitere Grundlagen-Fragen werden hier beantwortet:
crashkurs.christian-stelzmann.de
und die neue Version speziell ab Turbo Delphi:
www.christian-stelzm...shkurs_reloaded.html
Ein weiteres gutes Online-Buch:
de.wikibooks.org/wik...grammierkurs:_Delphi
|
|
Bioman 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 30.08.09 21:07
Okay..erstmal danke...das einzige was mir nun wirklich noch probleme macht, ist die sache mit der ungültigen gleitkomma operation
Folgende Fehlermeldung bekomme ich :
Im Projekt Project3.exe ist eine Exception der Klasse EInvalidOp aufgetreten. Meldung :'Ungültige Gleitkommaoperation'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| program Project3;
uses Forms, Unit1 in 'Unit1.pas' , Unit2 in 'Unit2.pas' , Unit3 in 'Unit3.pas' ;
{$R *.res}
begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm3, Form3); Application.Run; end. |
Der Fehler wird in dem Project.dpr angezeigt bei dem "end" (einmal war es sogar "Begin")
Ich check garnichts mehr...
thx für die hilfe
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: So 30.08.09 21:08
Eventuell irgendwo eine Division mit einer Variablen? Wenn die 0 ist gibt es einen Fehler...
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
Bioman 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 30.08.09 21:41
ne...der fehler muss ganz gewiss in genau der procedur sein, weil die anderen alle funktionieren...ich hab auch mal sicherheitshalber die werte alle auf 1 gesetzt aber es passiert halt immer bei dem klick auf den einen button der für die procedur zuständig ist...also die die ganz oben von mir gepostet wurde..wenn ihr wollt geb ich auch gern den ganzen quellcode raus.
thx
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: So 30.08.09 21:49
OK, wenn du dir so sicher bist, dass der Fehler in dieser Prozedur verursacht wird, kannst du folgendes probieren:
Kommentiere alle Zeilen aus. Dann starten und sehen, ob der Fehler auftritt. Dann machst du das Kommentieren Zeile für Zeile rückgängig und testest wieder. Dann weißt du schließlich, in welcher Zeile der Fehler auftritt.
Das ganze kannst du natürlich auch mit Hilfe der schrittweisen Ausführung bzw. mit Haltepunkten ebenso realisieren.
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 30.08.09 21:53
Der Fehler wird vermutlich bei der Ausgabe geschehen, wenn der Wert der entsprechenden Variable nicht zugewiesen wurde und einen seltsamen Wert hat. Denn wenn ansonsten die Werte in Ordnung sind, kann vorher der Fehler nicht auftreten.
Aber mit einem Haltepunkt und Debuggen, hättest du die passende Zeile schon längst... 
|
|
Bioman 
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 03.09.09 16:17
Also, mithilfe meines Infolehrers kamen wir auf den Fehler, auch wenn er selbst diesen nicht direkt sah
er war in der edit festlegung, da ich dort floattostr stehen hatte aber eig. musste dort inttostr hin.
Moderiert von Narses: Weitere Frage entfernt.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 03.09.09 16:30
Moin!
Markierst du den Thread noch entsprechend, wenn dein Problem gelöst ist? Danke.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
|