Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

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

Re: Array an Function übergeben

  Alt 7. Sep 2006, 00:39
Hi,

das ist wieder ein anderes Problem.

Du spricht die Parameterübergabe per Call-By-Reference und Call-By-Value an.

Hast du etwas deaklariert wie

procedure schreib(s: string; foo: TMyArray); Dann ist foo eine Kopie der übergebenen Variablen. In der Funktion arbeitest du die ganze Zeit mit dieser Kopie und änderst auch nur diese.
Möchtest du allerdings die übergebene Variable ändern, muss du der Prozedur "sagen", dass sie dies tun soll. Mittels var übergibst du die Speicheradresse des Parameters und es wird dann auch in diesem geändert. Du arbeitest also nicht mehr mit einer Kopie:

procedure schreib(s: string; var foo: TMyArray); Du kannst natürlich auch eine Funktion schreiben und das Ganze dann so aufrufen:

Delphi-Quellcode:
function schreib(s: string): TMyArray;
var
  Temp: TMyArray;
  i: Integer;
begin
  // hier das Array füllen ...
  for i := 1 to 5 do
  begin
    Temp[i] := s;
  end;

  // ... und dann als Ergebnis zurückgeben
  Result := Temp;
end;
Die Zuweisung zu deinem Array würde dann so erfolgen:

test1 := schreib('hallo');
  Mit Zitat antworten Zitat