Zitat von
ghost007:
Und wo genau liegt das problem? Das programm sollte trotzdem laufen, oder? die warnung bekommst du damit weg, das du das ergebnis mal ausgeben lässt, z.b. in ner label oder ähnliches.
Den hinweis, indem du im onCreate event der form ergebnis:=0; machst
komplett falsch ... damit bekommst du höchstens die Meldungen weg, aber nicht die tatsächliche Ursache.
Denn Ergebnis wird nur übergeben, bekommt aber den ückgabewert nicht zurück
Statt OUT nönnteman hier zwar auch VAR nehmen, aber ersten ist braucht diese Variable kein Wert an die Prozedur übergeben zu werden (jedenfalls wird er intern nicht benötig)
Code:
procedure TFAnwendung.btnRechnenClick(Sender: TObject);
...
Addieren(Zahl1, Zahl2, Ergebnis);
edtAdd.Text := IntToStr(Ergebnis);
end;
procedure TFAnwendung.Addieren (Zahl1, Zahl2 : integer; [b]Out[/b] Ergebnis : integer);
begin
Ergebnis := Zahl1 + Zahl2;
end;
Alternativ könntes du auch der Funktion entsprechend eine Funktion aus der Prozedur machen ... schließlich ist
Ergebnis das Rechenergebnis von
Addieren.
Code:
procedure TFAnwendung.btnRechnenClick(Sender: TObject);
...
[b]Ergebnis := Addieren(Zahl1, Zahl2); [/b]
edtAdd.Text := IntToStr(Ergebnis);
end;
[b]function TFAnwendung.Addieren (Zahl1, Zahl2 : integer) : integer; [/b]
begin
[b]Result := [/b]Zahl1 + Zahl2;
end;
Und die Meldungen sind doch eindeutig?
Zitat:
[Warnung] Unit1.pas(43): W1036 Variable 'Ergebnis' ist möglicherweise nicht initialisiert worden
Code:
AddieAddieren(Zahl1, Zahl2, [b]Ergebnis[/b]);
edtAdd.Text := IntToStr(Ergebnis);
Ergebnis wird von den verwendeten Funktionen nur als Eingabeparameter verwendet ... es wird also nirgendwo etwas zugewiesen.
Zitat:
[Hinweis] Unit1.pas(49): H2077 Auf 'Ergebnis' zugewiesener Wert wird niemals benutzt
Code:
procedure TFAnwendung.Addieren (Zahl1, Zahl2, Ergebnis : integer);
begin
[b]Ergebnis := [/b]Zahl1 + Zahl2;
end;
Ergebnis wird zwar was zugewiesen, aber nicht verwendet ... schließlich ist Ergebnis nicht als Ausgabeparameter definiert.