Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Einen Haufen Objekte verwalten (https://www.delphipraxis.net/46840-einen-haufen-objekte-verwalten.html)

Michael_Bayer 1. Jun 2005 13:49


Einen Haufen Objekte verwalten
 
Hallo.
Ich hab hier ein Projekt, in dem zur Laufzeit viele Objekte dyn. erzeugt werden.
Jetzt stellt sich die Frage, wie ich die Verwalten soll.

Ich würde da ein dynamisches Array nehmen und immer um eins größer werden lassen, wenn ein neues Objekt dazu kommt.
Nun kommt es in dem Projekt vor, dass Objekte auch zur Laufzeit wieder verschwinden.
Hier würde ich den entsprechenden Eintrag im Array einfach nur nil'en.
Je nach dem wieviele Objekte erstellt/grlöscht werden, dürfte das Array nach einiger Zeit aussehen, wie ein schweizer Käse. (und evtl irgendwann mal überlaufen)

Ist das sinnvoll das so zu machen oder sollte ich eine Art "Controllerobjekt" machen, dass die einzelnen Objekte in sich trägt und ab und zu mal eine Art "Wartung" durchführt und die ge'nil'ten Einträge entfernt und die Objekte aufrücken lässt (und evtl. einen Index setzt)

Oder vielleicht ganz anders?

Gruß und danke!

franktron 1. Jun 2005 13:54

Re: Einen Haufen Objekte verwalten
 
Warum brauchst du überhaupt ein array oder sowas ich erstelle die einfach

Delphi-Quellcode:
With TButton.Create do
Begin
  Caption:='xxx';
  Name='B_1';
End;
Und Spreche die dann mit Findcomponent an

alcaeus 1. Jun 2005 13:56

Re: Einen Haufen Objekte verwalten
 
Hallo Michael,

guck dir mal die Delphi-Referenz durchsuchenTObjectList an. Darin kannst du Objekte jeglichen Typs (solang sie von TObject abgeleitet sind) speichern.

Greetz
alcaeus

barf00s 1. Jun 2005 13:57

Re: Einen Haufen Objekte verwalten
 
@franktron

with TButton.Create do begin
...
Parent := Self; // oder was auch immer dein parent war, panel, form, frame, ...
...

hast vergessen :)

Tyrael Y. 1. Jun 2005 13:58

Re: Einen Haufen Objekte verwalten
 
Versteh ich dich richtig...du erzeugst Objekte und lässt sie rumliegen einfach so??

bzw. sidn deine Objekte alle global :shock: ?

weil normal wäre...
Delphi-Quellcode:
function MyFunction(.....): TIrgendwas;
var
...
 EineInstanz: TMyObject;
...
begin
  ...
  EineInstanz := TMyObject.Create
  try
   .....
   .....
  finally
   EineInstanz.free;
  end;
end;
man instanziert ein Objejt und sobald man es nicht braucht, weg damit...
oder hab ich dich ganz falsch verstanden?

Gruß

Michael_Bayer 1. Jun 2005 14:02

Re: Einen Haufen Objekte verwalten
 
Zitat:

Zitat von Tyrael Y.
Versteh ich dich richtig...du erzeugst Objekte und lässt sie rumliegen einfach so??

bzw. sidn deine Objekte alle global :shock: ?

weil normal wäre...
...code...

man instanziert ein Objejt und sobald man es nicht braucht, weg damit...
oder hab ich dich ganz falsch verstanden?

Gruß

Ja die Objekte sind global, denn das sind halt meine, mit daten gefütterten, Objekte. (Die liegen einfach rum und warten darauf, dass man was mit ihnen macht :))

EDIT: @alcaeus: TObjectList klingt gut..Danke!

jim_raynor 1. Jun 2005 14:06

Re: Einen Haufen Objekte verwalten
 
Zitat:

Zitat von franktron
Warum brauchst du überhaupt ein array oder sowas ich erstelle die einfach

Delphi-Quellcode:
With TButton.Create do
Begin
  Caption:='xxx';
  Name='B_1';
End;
Und Spreche die dann mit Findcomponent an

Erstes ist es verdammt langsam und zweitens vermute ich mal, dass er keine Visuellen Objekte hat.

Um wirklich viele Objekte zu verwalten ist TObjectList vermutlich am besten.

franktron 1. Jun 2005 15:21

Re: Einen Haufen Objekte verwalten
 
Zitat:

Zitat von barf00s
@franktron

with TButton.Create do begin
...
Parent := Self; // oder was auch immer dein parent war, panel, form, frame, ...
...

hast vergessen :)

Ja wahr etwas zu stark vereinfacht

@Tyrael Y.

Ja sie liegen nur so rum

alzaimar 1. Jun 2005 15:34

Re: Einen Haufen Objekte verwalten
 
Nochmal für mich als Rentner zum Mitschreiben:
Du hast also tierisch viele Objekte, die Du ... wie erzeugst? So etwa?
Delphi-Quellcode:
...
  TMyObject.Create
...
Oder wie?
Also, ich habe bei mir, wenn überhaupt, immer eine Liste von Objekten. Dann habe ich eine Funktion, die mir ein neues Objekt liefert. In der Funktion speichere ich das Objekt dann in einer TList ab. Wozu eigentlich dynamische Arrays? Ist doch Murks. Dann noch eine, die eine Instanz wieder freigibt. Wenn Du richtig abschleimen willst, dann kannst Du ja noch davon ausgehen, das die Objekte 'wissen', das sie in einer Liste gespeichert werden, also ähnlich einer Collection:

Delphi-Quellcode:
Constructor TMyObject.Create;
Begin
  Inherited;
  aMyObjectList.Add (Self);
  ...
End;

Destructor TMyObject.Destroy;
Begin
  aMyObjectList.Remove (Self);
  ...
  Inherited;
End;

Procedure FinalizeObjects;
Var
  i : Integer;
Begin
  While aMyObjectList.Count > 0 do TMyObject (aMyObjectList).Free;
  aMyObjectList.Free;
End;

Initialization
  aMyObjectList := TList.Create;
Finalization
  FinalizeObjects;
end.
Nur mal so: Gewöhn Dir doch mal an, soweit möglich, die vorhandenen Delphi-Klassen zu nehmen, die sind echt praktisch. Wenn man sich mal dran gewöhnt hat, machen die einem das Leben sogar einfacher.

P.S: TObjectList gibts wohl erst *nach* D6, oder? Ich habs jedenfalls nicht...

barf00s 1. Jun 2005 15:36

Re: Einen Haufen Objekte verwalten
 
TObjectList findest in der Unit "Contnrs" .sprich. Containers


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz