Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi zur Laufzeit Objektname bestimmen und Objekt erzeugen (https://www.delphipraxis.net/11632-zur-laufzeit-objektname-bestimmen-und-objekt-erzeugen.html)

cook 10. Nov 2003 22:02


zur Laufzeit Objektname bestimmen und Objekt erzeugen
 
Also folgendes:
Ich habe eine Klasse TMaschine, in der die Außmaße, Eigenschaften, u.s.w. meiner Maschine stehen. Nun will ich zur Laufzeit mehrere Maschinenobjekte dieser Klasse erzeugen, die natürlich auch alle anders heißen sollen. Normalerweise mach ich das ja mit einer statischen Zuweisung im Quelltext, also sowas wie
Delphi-Quellcode:
var
FMaschine : TMaschine;
Jedoch wie halte ich die Variable FMaschine dynamisch? Also so dass ich eine Abfrage mache: wie soll die Maschine1 /2 /3 ... heißen?
Ich weiß vorher nicht wieviele Maschinen ich erzeugen will.
Und wie spreche ich dann im weiteren Programm meine Maschinen an, weil das muss ja dann auch dynamisch sein!??

Ich bitte um Hilfe!
mfg cook

Chewie 10. Nov 2003 22:05

Re: zur Laufzeit Objektname bestimmen und Objekt erzeugen
 
Nimm doch ein Array, in dem du deine Objekte verwaltest (Oder auch TObjectList). Dann kannst du über einen Index dynamisch an ein bestimmtes Element gelangen.

cook 10. Nov 2003 22:36

Re: zur Laufzeit Objektname bestimmen und Objekt erzeugen
 
Also mache ich dann sowas wie?:
Delphi-Quellcode:
Objektarray: array[1..20] of record
    Objektname: string{30];
    Objektbreite: integer;
...
Objektarray[2].Objektname := Edit.Text;
...
Edit2.Text := IntToStr(Objektarray[2].Objektbreite);
Ist das möglich???
Entspricht das der OOP? oder macht man das dann anders?

Christian Seehase 10. Nov 2003 22:42

Re: zur Laufzeit Objektname bestimmen und Objekt erzeugen
 
Moin Cook,

Chewie dachte wohl eher an TList, also so in dieser Form:

Delphi-Quellcode:
var
  lsMaschinenListe : TList;

begin
  lsMaschinenListe := TList.Create;
  lsMaschinenListe.Add(TMaschine.Create);
end;
Wichtig ist, dass Du das so einbaust, dass Du später erst die Objekte in der Liste jeweils wieder freigibst, bevor Du die Liste freigibst.

cook 10. Nov 2003 22:57

Re: zur Laufzeit Objektname bestimmen und Objekt erzeugen
 
ok... dann werd ich das mal mit TList ausprobieren. Aber erst morgen, für heute genug programmiert.
Mit Freigeben meinst du dann
Maschine1.Free;
und danach erst
lsMaschinenliste.Free;
??

Wann muss ich die Sachen eigentlich wieder freigeben? Jedesmal beim beenden des Programms, oder nur wenn ich ein Objekt löschen will?

n8 cook

choose 10. Nov 2003 23:12

Re: zur Laufzeit Objektname bestimmen und Objekt erzeugen
 
Zitat:

Zitat von Christian Seehase
Wichtig ist, dass Du das so einbaust, dass Du später erst die Objekte in der Liste jeweils wieder freigibst, bevor Du die Liste freigibst.

Hallo cook, Chewie hat hier bereits auf TObjectList verwiesen, eine Klasse, die ähnliche Funktionen aufweist, wie TList, das Arbeiten mit Objekten aber ohne "hässliche Casts" und die automatische Freigabe der Ressourcen ermöglicht (siehe OH).


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.

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