Einzelnen Beitrag anzeigen

Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: Problem mit LixtBox, Stringlist und Memofeld

  Alt 27. Feb 2010, 20:49
Hallo,

du kannst auch alles andere hinzufügen, du hast ja 4 Byte (SizeOf(TObject) [ein pointer halt]) "platz".
um ein record hinzuzufügen müsstes du manuell erstellen mit "New(Pointer variable vom Record)" und hinzufügen. Bei löschen und freigeben der Liste musst du die records vorher manuell freigeben mit z.B. Dispose().
Delphi-Quellcode:
type
  TMyRecord = packed record
    FBlah: Integer;
    FFoo: ShortString;
    FBar: Smallint;
  end;
  PMyRecord = ^TMyRecord;

procedure CreateOrInitFooBarOrso;
var
  LPMyRec: PMyRecord;
begin
  myList := TStringList.Create;
  myList.OwnsObject := FALSE; //wichtig da "objects" ja keine TObject-nachfahren beinhaltet
  
  for what so ever do
  begin
    //Record erstellen
    New(LPMyRec)
    LPMyRec^.FBlah := 123456789
    LPMyRec^.FFoo := 'Huhu ich bin ein shortstirng';
    LPMyRec^.FBar := 1;
    myList.AddObject('ein String', TObject(LPMyRec));
  end;
end;

procedure FreeIt;
var
  LPRec: PMyRecord;
begin
  while MyList.Count > 0 do
  begin
    LPRec := PMyRecord(myList.Objects[0]);
    Dispose(LPRec);
  end;
  myList.Free;
end;
  Mit Zitat antworten Zitat