Autor Beitrag
Bioman
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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 :
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 30.08.09 20:35 
Hallo und :welcome: im Forum!
user profile iconBioman hat folgendes geschrieben Zum zitierten Posting springen:
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:
ausblenden 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:
ausblenden Delphi-Quelltext
1:
2:
3:
metall := (power(1.5,stufe)*40);
// besser:
metall := Power(1.5, stufe) * 40;
Beides funktioniert meistens, aber nicht immer.

user profile iconBioman hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconBioman hat folgendes geschrieben Zum zitierten Posting springen:
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
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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.

ausblenden 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' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3};

{$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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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... :roll:
Bioman Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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 user profile iconNarses: Weitere Frage entfernt.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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.