AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

procedure-Deklaration

Ein Thema von Ultimator · begonnen am 31. Mai 2004 · letzter Beitrag vom 31. Mai 2004
Antwort Antwort
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#1

procedure-Deklaration

  Alt 31. Mai 2004, 12:44
Hallo!
Mir ist leider kein besserer Titel eingefallen, aber hier trotzdem meine Frage:
Wo genau ist der Unterschied zwischenprocedure Machwas(Teststring:string); undprocedure Machwas(var Teststring:string); Also zusammenfassend gesagt: Wozu ist dieses var gut?
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: procedure-Deklaration

  Alt 31. Mai 2004, 12:47
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.
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#3

Re: procedure-Deklaration

  Alt 31. Mai 2004, 12:47


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
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: procedure-Deklaration

  Alt 31. Mai 2004, 12:49
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#5

Re: procedure-Deklaration

  Alt 31. Mai 2004, 12:49
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... [/edit]
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#6

Re: procedure-Deklaration

  Alt 31. Mai 2004, 12:53
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...
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#7

Re: procedure-Deklaration

  Alt 31. Mai 2004, 12:54
Achso. OK, danke.
Das hab ich mich schon länger gefragt...
Julian J. Pracht
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 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