Entwickler-Ecke

Free Pascal - VAR Parameter setzen


Delete - Sa 13.05.17 20:30
Titel: VAR Parameter setzen
- Nachträglich durch die Entwickler-Ecke gelöscht -


Christian S. - Sa 13.05.17 20:47

Wenn Du die Funktion mit denselben Werten aufrufen willst, wie wenn Du die Variablen gar nicht zugewiesen hast, sollte sowas richtig sein.

Delphi-Quelltext
1:
2:
i := Default(Integer);
p := Default(PChar);

Ansonsten hängt von der Funktion "Beispiel" ab, welche Werte im Aufruf Sinn machen.


Delete - Sa 13.05.17 23:18

- Nachträglich durch die Entwickler-Ecke gelöscht -


mandras - Sa 13.05.17 23:28

ich verstehe das Problem im Augenblick nicht,
vielleicht übersehe ich ja was.

Ich halte fest:
Im konkretisierten Beispiel (Lazarus) erfolgt kein Warnhinweis wenn "i:=0" nicht auskommentiert ist,
wenn die Auskommentierung da ist erfolgt Hinweis daß i nicht verwendet wird?

Da hat Lazarus aber doch recht finde ich.

Mit Auskommentierung ist i beim Aufruf der Prozedur "beispiel" undefiniert. Das stört ja nicht.
Ob "beispiel" nun den Wert von i ändert oder nicht ist unerheblich, da ja nach dem Aufruf von "beispiel"
auf das i nicht zugegriffen wird.
Also ist i nicht verwendet hier. -> da hat Lazarus doch korrekt gemeckert oder?

Wenn Du die Auskommentierung wegläßt gibt es andererseits keine Warnung mehr, denn
i wird ja verwendet nachdem der Wert 0 zugewiesen wurde: Und zwar als Parameter welcher
"Beispiel" mitgegeben wird.


jaenicke - Sa 13.05.17 23:35

Ich finde das in diesem Fall sehr einfach. Wenn die Parameter nicht immer benötigt werden, dann kannst du doch einfach eine overloaded Methode erstellen, in der die Parameter nicht vorhanden sind. Das hat den Vorteil, dass du die Variablen auch gar nicht erst lokal deklarieren musst um die Funktion aufzurufen.


Delete - Sa 13.05.17 23:43

- Nachträglich durch die Entwickler-Ecke gelöscht -


jaenicke - So 14.05.17 00:16

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Ginge es überhaupt, dass man dem var Parameter etwas mitgibt, ohne eine Variable dafür zu verwenden?
Nein, das meinte ich ja mit der lokalen Variable, die nur durch eine Überladung nicht zum Aufruf benötigt wird.


Delete - So 14.05.17 00:23

- Nachträglich durch die Entwickler-Ecke gelöscht -