Hallo,
ich habe ein Problem mit call by value/ cb reference.
Soweit ich weiss übergebe ich mit proceduername(parameter) den parameter
als CBV, sprich der Wert des Parameters im ausführenden Kontext wird auch
bei Manipulation des Parameters innerhalb der procedure nicht verändert.
CBR würde ich mit procedurename(var parameter) machen ... richtig?
Nun, ich habe folgenden Code (su). Ich gebe Vor und Nach Aufruff der Procedur
die Inhalte meines Stringlisten-Parameters aus und diese sind unterschiedlich...
Die Modifikation der Inhalte erfolgt dabei durch
Delphi-Quelltext
1:
| pL.Strings[x] := modifyLongDirectoryname(pL.Strings[x],25); |
Der Aufruf aus meinem Hauptprogramm ist updateMemoDirsAndFiles(DirsAndFiles).
Eine Ausgabe von Dirsandfiles.strings[1] enthält vor dem Proceduraufruf den ganzen Dateinamen,
danach den modifizierten kurzen Dateinamen ... genau das soll halt nicht sein.
kann mir das jemand erklären? Übersehe ich da etwas oder werden Listen / Arrays... evtl unter
Delphi gesondert behandelt??
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Procedure updateMemoDirsAndFiles(pL: TStringList); var x : integer; begin if pL= NIL then exit; if pL.Count < 1 then exit; x:= 0; for x:=0 to pL.Count-1 do begin pL.Strings[x] := modifyLongDirectoryname(pL.Strings[x],25); end; for x:=0 to nList.Count-1 do begin FormDirectorySelect.MemoDirsAndFiles.Lines.Add(pL.Strings[x]); end; end; |