Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Wie Array mit Pointern auf Klassen-Instanzen füllen?

  Alt 25. Mär 2004, 16:37
Zitat:
FBufferArray: array of array of Pointer;
Das geht sowieso nicht!
Es darf höchsten eine Dimension offen bleiben.
Also etwa:
array[1..100] of array of Pointer

Der Datentyp Pointer ist auch Falsch.
Da alle Klasse in Delphi von TObject abgeleitet sind wäre TObject der richtige
Datentyp.

Angenommen du möchtest ein 2-dim. Array mit offenen Grenzen.
Dann muss das mehrdimensionale Array auf das eindimensionale Array abgebildet
werden.

Delphi-Quellcode:
type
   TMeinObjArray = array of TObject; // offenes eindim. Array von Objekten

   maxX := 100; // zur Laufzeit festlegen
   maxY := 50;

// Speicher besorgen
   SetLength(meinObjArray, maxX*maxY);

// befüllen mit Instanzen
   for i:= 0 to maxY-1 do
      for j := 0 to maxX-1 do
         // da beide Dimensionen offen sind
         // müssen wir selber rechnen
         meinObjArray[i*maxX+j] := TGround.Create;

// Zugriff auf TGround an Position 13, 40
   TGround(meinObjArray[13*maxX+40]).LiftUpTotheSky(....);


// Instanzen freigeben
   for i := 0 to maxX*MaxY-1 do
   begin
      TGround(meinObjArray[i]).Free;
   end;
Schau dir mal TObjectList an; das könnte dir nützlich sein.
Andreas
  Mit Zitat antworten Zitat