Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Pointer auf "Array of String" an Funktion übergeben (https://www.delphipraxis.net/91020-pointer-auf-array-string-funktion-uebergeben.html)

ThE_-_BliZZarD 27. Apr 2007 14:25


Pointer auf "Array of String" an Funktion übergebe
 
Hallihallo liebe DP-Gemeinde,


habe jetzt schon Google und die Boardsuche mehrfach missbraucht, aber irgendwie keine gute Erklärung gefunden..

Mein Problem:

Ich habe ein Array of String mit ein paar Elementen.
Am liebsten würde ich dieses Array einfach als "Result" der function zurückgeben, aber das geht irgendwie nicht.. FALLS es doch geht, bitte ich um einen Hinweis ;-)

Dann habe ich mir gedacht: Kein Problem, machen wir das Array in der aufrufenden Funktion, übergeben den Pointer und schreiben dann direkt rein.. sooo.. naja, und da hörte das Hochgefühl auch schon wieder auf ^^

Ich bitte um ein How-To: "Pointer für Array of String erstellen & an eine Funktion übergeben & dort benutzen"

Tausend Dank im Vorraus ;-)

sirius 27. Apr 2007 14:39

Re: Pointer auf "Array of String" an Funktion über
 
Du könntest auch eine TStringList nehmen, ansonsten müsstest du entweder einen neuen Typ "type TStringarray=array of string" definieren oder das fertige array als pointer von der aufrufenden Funktion übergeben.

ThE_-_BliZZarD 27. Apr 2007 14:41

Re: Pointer auf "Array of String" an Funktion über
 
Zitat:

Zitat von sirius
...oder das fertige array als pointer von der aufrufenden Funktion übergeben.

Hmm^^ alles wird genommen, aber bitte ein CODEBEISPIEL.. Sry aber ich habe sämtliche Anleitungen gelesen aber nirgends war ein vernünftiges Beispiel zu finden..

sirius 27. Apr 2007 15:00

Re: Pointer auf "Array of String" an Funktion über
 
Delphi-Quellcode:
procedure foo2(const list:Tstringlist);
begin
  //hier kann man alles der Liste ändern
  list.add('0');
  list.add('2');
  list.add('');
  list.add('Ende');
end;

procedure foo1(p:pointer);
var b:array of string;
begin
  //!!!hier nicht die Größe des arrays ändern!!!
  b:=p;
  b[0]:='0';
  b[1]:='2';
  b[9]:='Ende';
end;
procedure TForm1.Button1Click(Sender: TObject);
var a:array of string;
    i:integer;

    list:Tstringlist;
begin
//Beispiel mit array of string
  setlength(a,10);
  for i:=0 to 9 do a[i]:='';
  foo1(a);
  for i:=0 to 9 do memo1.Lines.Add(a[i]);
  finalize(a);

  memo1.lines.add('------------');
//Beispiel mit Tstringlist
  list:=Tstringlist.Create;
  try
    foo2(list);
    memo1.lines.addstrings(list);
  finally
    list.free;
  end;
end;
Ich würde dir die TStringlist-Variante empfehlen. Die ist genau dafür gemacht. Ausserdem kann man mit einer StringList noch viel mehr machen (siehe: insert, move, delete, addstrings) und zugreifen kannst du damit auch, wie auf ein array "s:=list[1]"

ThE_-_BliZZarD 27. Apr 2007 15:18

Re: Pointer auf "Array of String" an Funktion über
 
Vielen Dank, is ja sau einfach :mrgreen: :mrgreen:

Habs mit der Array of String methode gelöst, brauche nur 4 feste Elemente..

DANKE FÜR DIE SCHNELLE HILFE!


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 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