Thema: Delphi Procedure

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.274 Beiträge
 
Delphi 12 Athens
 
#4

Re: Procedure

  Alt 12. Mai 2007, 01:39
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat