Thema: Delphi TObjectlist.add(record)?

Einzelnen Beitrag anzeigen

Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: TObjectlist.add(record)?

  Alt 6. Mär 2006, 23:44
Mit record kann man sehr wohl arbeiten, genauer gesagt mit den Pointers auf Record.
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    List:TList;
    procedure AddItem( NewItem:pointer);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type
  PmyRec = ^TmyRec;
  TmyRec = record
    item1:Integer;
    item2:Byte;
    item3:string; // vorsicht ;)
  end;

procedure TForm1.AddItem(NewItem: pointer);
begin
  with PmyRec( NewItem )^ do
  begin
    ListBox1.Items.Add( IntToStr( item1 ));
    ListBox1.Items.Add( IntToStr( item2 ));
    ListBox1.Items.Add( item3 );
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  newRec : PmyRec;
  i:Integer;
begin
  Randomize();

  if not Assigned(List) then
  begin
    List := TList.Create;
  end;

  for i:=0 to 10 do
  begin

    New( newRec );

    with newRec^ do
    begin
      item1 := random(100);
      item2 := random(255);
      item3 := 'hallo';
    end;

    List.Add( newRec );
    AddItem( newRec );
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  i:Integer;
  rec:PmyRec;
begin
  for i:= List.Count-1 downto 0 do
  begin
    rec := PmyRec ( List.Items[i] );
    rec^.item3 := '';
    List.Delete(i);
    Dispose(rec);
  end;

  List.Free();
end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat