type IntArray = Array of Integer;
pIntArray = ^IntArray;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function getArray:stuck_out_tongue:IntArray;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
pIArray : pIntArray;
IArray : IntArray;
i : Integer;
begin
pIArray := getArray;
IArray := pIArray^;
for i:=0 to High(IArray)-1 do
Caption:=Caption+’ '+inttostr(IArray[i]);
end;
function TForm1.getArray:stuck_out_tongue:IntArray;
var
localArray : IntArray;
begin
setlength(localArray,10);
localArray[4]:=9;
result:=@localArray;
end;
das
sieht verdammt gefährlich aus. Habs nicht getestet, aber ich denke, der Fehler liegt hier:
Dein localArray ist ein LOKALES Array, welches nach Beenden der Methode getArray wieder gekillt wird.
Am besten, Du läßt diese Sache mit dem Zeiger ganz sein; übergebe doch einfach das Array als solches. Ist sicherer und außerdem wird intern auch nur mit Zeiger gearbeitet.
Gruß, Steffen
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Stimmt. Mit einem globalen Array gehts tatsächlich.
Ist aber ziemlich hässlich. Ich will mehrere dieser Arrays an einen Treeview anhängen - deshalb die Zeiger.
Wahrscheinlich muss ich eine komplett andere Lösung suchen.
Trotzdem vielen Dank.
Chris
sieht verdammt gefährlich aus. Habs nicht getestet, aber ich
denke, der Fehler liegt hier:
Dein localArray ist ein LOKALES Array, welches nach Beenden
der Methode getArray wieder gekillt wird.
Am besten, Du läßt diese Sache mit dem Zeiger ganz sein;
übergebe doch einfach das Array als solches. Ist sicherer und
außerdem wird intern auch nur mit Zeiger gearbeitet.
ungetestet, klappt aber vielleicht trotzdem
…und die Arrays behandelst Du dann genauso wie Deine Zeiger.
Andere Möglichkeit: Du kapselst Dein Array in einem Objekt, dann kannst Du auch wieder mit Zeigern hantieren )
Gruß, Steffen
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]