Thema: Delphi array of record in class

Einzelnen Beitrag anzeigen

blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: array of record in class

  Alt 23. Apr 2009, 02:08
Zeig uns doch ein wenig Quellcode, damit wir dir konkrete Ratschläge geben können.

Records sind übrigens konstrukte, die man idR durch Klassen ersetzt, wenn man 100% OOP programmiert.

Ersetze also erstmal das Record durch eine Klasse. Die Elemente sind dann Felder mit der Sichtbarkeit public. Beachte! Eine Klasse muss in Zukunft erstellt (instanziiert) werden und nicht einfach so wie ein Record verwendet werden.

Vorher:

Delphi-Quellcode:
type
  TKoordinate = record
    x: Integer;
    y: Integer;
  end;

procedure MeineFunktion;
var
  k: TKoordinate;
begin
  k.x := 5;
  k.y := 3;
end;
Nachher:

Delphi-Quellcode:
type
  TKoordinate = class(TObject)
  public
    x: Integer;
    y: Integer;
  end;

procedure MeineFunktion;
var
  k: TKoordinate;
begin
  k := TKoordinate.Create();
  try
    k.x := 5;
    k.y := 3;
  finally
    k.free;
  end;
end;
Bei deiner Verwaltungsklasse sagst du dann einfach sowas:

Delphi-Quellcode:
type
  TKoordinatenArray = array of TKoordinate; // dynamischer Array

  TVerwaltungsklasse = class(TObject)
  private
    meinArray: TKoordinatenArray;
  public
    procedure machWasMitMeinemArray;
  end;

procedure TVerwaltungsklasse.machWasMitMeinemArray;
begin
  //meinArray...
end;
Ich denke, die Deklaration von TKoordinatenArray ist das, was du gesucht hast. Eine solche Typdeklaration ist wichtig, wenn du z.B. einen Array of Irgendwas als Funktionswert zurückgeben willst.

Falsch:

function MyFunction: array of TObject; Richtig:

Delphi-Quellcode:
type
  TObjectArray = array of TObject;

function MyFunction: TObjectArray;
Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat