Forum: Programmieren allgemein
by Luckie,
30. Sep 2008
procedure foo(c: Real);
begin
// tu was
end;
// ...;
procedure bar;
var
cache: Real;
Forum: Programmieren allgemein
by Luckie,
30. Sep 2008
Warum ist cache dann initialisiert? Davon mal abgesehen, würde das Alex wohl komplett aus der bahn werfen, wenn er seine ganzen Code jetzt noch umbauen sollte.
Forum: Programmieren allgemein
by Luckie,
30. Sep 2008
Ja, das mag ja alles so sein, aber woher soll der Compiler wissen, ob sich die globale Variable zwischen durch nicht ändert? Dann trifft die Bedingung nämlich nicht mehr zu und dann ist die Variable undefiniert. Und auf diese Tatsache weißt dich der Compiler mit der Warnung hin.
Forum: Programmieren allgemein
by Luckie,
30. Sep 2008
Aber das weiß ja der Compiler nicht, denn woher soll er wissen, dass FiCountCorrect immer null ist. Da stellt sich mir die Frage, warum nimmst du es als Bedingung auf, wenn es doch sowieso immer null?
Und was das else angeht:
else
begin
note := cache;
note := note - 5 / 15;
end;
Forum: Programmieren allgemein
by Luckie,
30. Sep 2008
Und wie kannst du da erkennen, welches end zu welchem begin gehört?
Was ist besser lesbar? Deins:
procedure TForm1.Note;
var note, cache: Real;
begin
if (FiCountCorrect=0) and (jkeins=1) and (jkzwei=1) then
begin
note:=7;
end else if (FiCountCorrect=0) and (jkeins=1) then
Forum: Programmieren allgemein
by Luckie,
30. Sep 2008
Die Caption deines Labels hat einen definierten Anfangswert.
Forum: Programmieren allgemein
by Luckie,
30. Sep 2008
Sagt doch die Fehlermeldung, sie kann einen nicht definierten Wert annehmen.
Du gibst sie am Ende aus
Label7.Caption:=FloatToStr(RundeAufStelle(cache, 1));
Aber welchen Wert hat sie, wenn schon die erste if-Bedingung nicht zutrifft?
Und du solltest dringend dein Einrückungsstil überdenken und zumindest bei Postings hier im Forum dich ungefähr an den Borlandstil halten.