Autor Beitrag
yogo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 121

Windowse, Linuxe
Delphi 3 Prof., D5 Enterprise, D6 Enterprise, Kylix, Delphi 2010
BeitragVerfasst: So 23.05.10 20:43 
Ich möchte zur Laufzeit einem Array aus der Klasse TPeer eine Instanz hinzufügen.
Leider kriege ich einen Laufzeitfehler(Could not write in address 0000000)
Die Klasse:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Tpeer = class
    Ip: string;
    port: integer;
    name: string;
    rschlng: string;
    function rddstr: string;
    procedure wrtdstr(eingabe: string);
  public
    property dstr: string read rddstr write wrtdstr;
  end;

So ist der Array deklariert:
ausblenden Delphi-Quelltext
1:
peers: array of Tpeer;					


Der Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
peercnt := 0;
    while tmpstr <> '' do
    begin
      tmppeer := TPeer.Create;//funktioniert
      peers[peercnt] := tmppeer;//hier tritt der fehler auf
      peers[peercnt].dstr := Copy(tmpstr, 5, PInteger(@tmpstr[1])^);
      Delete(tmpstr, 14 + PInteger(@tmpstr[1])^);
      eigen^.Items.Add(Copy(tmpstr, 5, PInteger(@tmpstr[1])^));
      Delete(tmpstr, 14 + PInteger(@tmpstr[1])^);
      peercnt := peercnt + 1;
      tmppeer.Free;
    end;
    peercnt := peercnt - 1;


Ich habe es auch schon so versucht: peers[peercnt] := Create;
Dadurch ändert sich aber auch nur die Addresse, in der Fehler erzeugt wird; der Fehler selber bleibt.
Ich hab auch schon versucht einen Array aus Pointern zu machen, funktionierte ebenso nicht, aber da ich möchte, dass meine TPeers auch ausserhalb der Methode existieren, macht das ohnehin wenig Sinn.

Es wäre echt super, wenn jemand eine Idee hat, ich bin jedenfalls am Ende meines Pascals.

EDIT: Mit einem statischen Array geht es, aber ich weiss leider vorher nicht, ob ich 20 peers haben werde oder 2000


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Mo 24.05.2010 um 19:52
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 23.05.10 21:07 
Du musst auch die Länge des dynamischen Arrays setzen mit SetLength.
yogo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 121

Windowse, Linuxe
Delphi 3 Prof., D5 Enterprise, D6 Enterprise, Kylix, Delphi 2010
BeitragVerfasst: So 23.05.10 21:10 
:lol: Super, funktioniert. Man bin ich blöd... :oops: