![]() |
ist das ein wertparameter
ist sender ein wertparameter?
Delphi-Quellcode:
[edit=Luckie]Delphi-Tags ([ delphi] ... [ /delphi] ohne Leerzeichen) eingefügt. Beim nächten Mal bitte selber machen. Danke. Mfg, Luckie[/edit]
procedure TForm1.Button1Click(Sender: TObject);
var f:TextFile; i:Integer; begin AssignFile(f,'c:\test.txt'); ReWrite(f); for i:=0 to Memo1.Lines.Count-1 do WriteLn(f,Memo1.Lines[i]); closeFile(f); end; |
Re: ist das ein wertparameter
Ja.
|
Re: ist das ein wertparameter
Was verstehst du unter Wertparameter?
Es gibt call-by-reference und call-by-value. Ersteres bedeute, dass nur eine Referenz auf die Speicheradresse übergeben wird. Das heißt, wird dieser Parameter in der Routine geändert, wird er er direkt an der Speicheradresse geändert und bleibt logischerweise nach verlassen der Routine geändert. zweiteres bedeute, dass eine Kopie der Variablen als Parameter übergeben wird. Eine Änderung hat also keinen Einfluss auf den ursprünglichen Wert. Beispiel:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// // foo1 // call-by-reference // procedure foo1(var i: Integer); begin i := 5; end; //////////////////////////////////////////////////////////////////////////////// // // foo2 // call-by-value // procedure foo2(i: Integer); begin i := 5; ShowMessage(IntToStr(i)); end; procedure TForm1.Button1Click(Sender: TObject); var d: Integer; begin d := 1; foo1(d); ShowMessage(IntToStr(d)); end; procedure TForm1.Button2Click(Sender: TObject); var d: Integer; begin d := 1; foo2(d); ShowMessage(IntToStr(d)); end; |
Re: ist das ein wertparameter
Ich glaube, adi_svadi meint mit Wertparameter das, was Luckie als call-by-value bezeichnet.
call-by-reference ist dann ein Referenzparameter. Bei Referenzparametern steht immer das Schlüsselwort var, bei Wertparametern nicht. MfG Binärbaum |
Re: ist das ein wertparameter
Zitat:
was für ein Parametertyp ist denn sl in meiner Procedure blubb ;-)
Delphi-Quellcode:
procedure blubb (sl : TStringList);
begin sl.Add('foo'); end; procedure TForm1.Button1Click(Sender: TObject); var slist : TStringList; begin slist := TStringList.Create; try slist.Add('meow'); blubb (slist); finally slist.Free; end; end; |
Re: ist das ein wertparameter
Referenz-Parameter (oder wie man es nennen will), da Objekte automatisch als Refernz übergeben werden. ;)
|
Re: ist das ein wertparameter
Zitat:
Ich wollte nur zeigen das es nicht von dem Var beim Parameter alleine abhängig ist :stupid: |
Re: ist das ein wertparameter
Ach ich kleines Dummerchen :angel: und ich dachte, es wäre eine ernsthafte Frage von dir gewesen. :roll:
|
Re: ist das ein wertparameter
Zitat:
|
Re: ist das ein wertparameter
Zitat:
ABER: Da sl nur ein Zeiger ist, wird einfach ein Zeiger kopiert. Trotzdem erfolgt der Aufruf by-Value. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz