Autor Beitrag
Phantom1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 390



BeitragVerfasst: Mo 16.02.04 15:09 
Ich hab hier mal ein kleines Beispiel zu Nutzung der Klasse TObjectList geschrieben, ich bin mir jedoch nicht 100%ig sicher ob ich irgendwas vergessen hab und ob die mit ObjectList.Add() hinzugefügten Objekte auch alle ordnungsgemäß freigegeben werden?

hier mal der beispiel code:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Contnrs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  Test = Class
  protected
    procedure showmsg; virtualabstract;
  end;

  Test1 = Class(test)
  public
    procedure showmsg; override;
  end;

  Test2 = Class(test)
  public
    procedure showmsg; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Test1.showmsg;
begin
  ShowMessage('Test1');
end;

procedure Test2.showmsg;
begin
  ShowMessage('Test2');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  ObjList: TObjectList;
  i: Integer;
begin
  ObjList:=TObjectList.Create;
  Try
    ObjList.Add(Test1.Create);
    ObjList.Add(Test2.Create);
    For i:=0 To ObjList.Count-1 Do
      Test(ObjList[i]).showmsg;
  Finally
    ObjList.Free;
  End;
end;

end.


Ich hab dann noch eine zweite frage: Wozu dient die ähnliche klasse TClassList? hat jemand dazu ein verwendungsbeispiel?

mfg
phantom1
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Mo 16.02.04 15:19 
Moin.

Scheint so als hättest du was vergessen, weil so werden die objekte nicht freigegeben! Wenn du die property objList.OwnsObjects setzt wäre dies der fall :wink:

TClassList, ist wie der name schon sagt, eine liste mit klassen-typen. Du könntest zB. 100 verschiedene klassen in die liste schreiben und dann in einer schleife 100 verschiebe objekte in eine objectList kreieren.

_________________
mfg.
mâximôv
Phantom1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 390



BeitragVerfasst: Mo 16.02.04 15:51 
maximus hat folgendes geschrieben:
Scheint so als hättest du was vergessen, weil so werden die objekte nicht freigegeben! Wenn du die property objList.OwnsObjects setzt wäre dies der fall :wink:


Ist das property OwnsObjects nicht standardmäßig auf True gesetzt?

maximus hat folgendes geschrieben:
TClassList, ist wie der name schon sagt, eine liste mit klassen-typen. Du könntest zB. 100 verschiedene klassen in die liste schreiben und dann in einer schleife 100 verschiebe objekte in eine objectList kreieren.


Ah danke, sowas ähnliches hatte ich mir schon gedacht.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Mo 16.02.04 17:21 
Ja, hast recht...seh ich auch grade :wink:

_________________
mfg.
mâximôv