Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi procedure-Deklaration (https://www.delphipraxis.net/23231-procedure-deklaration.html)

Ultimator 31. Mai 2004 11:44


procedure-Deklaration
 
Hallo!
Mir ist leider kein besserer Titel eingefallen, aber hier trotzdem meine Frage:
Wo genau ist der Unterschied zwischen
Delphi-Quellcode:
procedure Machwas(Teststring:string);
und
Delphi-Quellcode:
procedure Machwas(var Teststring:string);
Also zusammenfassend gesagt: Wozu ist dieses var gut?

Matze 31. Mai 2004 11:47

Re: procedure-Deklaration
 
Das var übergibt die Speicheradresse und überschreibt somit die variable im Speicher ==> WIrd im kompletten programm verändert.

Ohne Var wird eine Kopie angelegt und die Variable nur innerhalb der Prozedur/Funktion verändert.

Mirilin 31. Mai 2004 11:47

Re: procedure-Deklaration
 
:hi:

Wenn Du den Parameter mit Var übergibst, so ändert sich - falls du ihren Wert in der Funktion änderst, auch ihr wert aussrhalb der Funktion.


F1 + Var

mfg Tobias

Sharky 31. Mai 2004 11:49

Re: procedure-Deklaration
 
Zitat:

Zitat von Ultimator
Hallo!
Also zusammenfassend gesagt: Wozu ist dieses var gut?

Grob gesagt: Wenn Du die Variable in der Procedure änderst kannst Du sie später wieder verwenden.

Delphi-Quellcode:
procedure MachWas (var wert : integer);
begin
  wert := wert +5;
end;

procedure TForm1.Button1Click (sender : TObject);
var
  mywert : Integer;
begin
  mywert := 2;
  MachWas (mywert);
  Label1.Caption := IntToStr (mywert);
end;

Ultimator 31. Mai 2004 11:49

Re: procedure-Deklaration
 
Also kann ich dann im gesamten Programm auf den String Teststring zugreifen, wenn ich das var davorschreibe?

[edit]...Ich hasse es, wenn ich zu langsam bin... :roll: [/edit]

phXql 31. Mai 2004 11:53

Re: procedure-Deklaration
 
ohne var ist es call by value, mit dem var ist es call by reference. angenommen, du hast eine procedure1, in der deklarierst du den string bla mit dem wert "blubb". du rufst in der procedure1 die procedure2 auf, die als parameter einen string erwartet (mit dem var davor). die procedure2 verändert den string bla auf "grün". nun ist auch in der procedure1 der wert von bla auf "grün" geändert worden. würdest du das var weglassen, würde nach dem ausführen der procedure2 der string bla immer noch "blubb" sein würde...

Ultimator 31. Mai 2004 11:54

Re: procedure-Deklaration
 
Achso. OK, danke. :thuimb:
Das hab ich mich schon länger gefragt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz