| Autor |
Beitrag |
Bestzeller
      
Beiträge: 48
|
Verfasst: Mi 22.04.09 20:16
Hi,
Ich hab ein eigenes Objekt erstellt und jedes mal wenn ich ein neues erstelle ,das alte aber noch behalten will, muss ich oben var object1,object2,....:Myobject hinschreiben, gibt es da auch eine andere Möglichkeit, soddass ich das nur einmal da stehen haben muss?
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Mi 22.04.09 20:22
Du kannst Arrays (dynamische in dem Fall) oder eine TObjectList verwenden.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Bestzeller 
      
Beiträge: 48
|
Verfasst: Mi 22.04.09 20:33
Danke für die schnelle antwort!
Würde es dann object:array of Myobject heißen oder wie mach ich das ?
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 22.04.09 20:36
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var MyList: TObjectList; begin MyList := TObjectList.Create; MyList.OwnsObjects := True;
... MyList.Add(MeinObject); ... TMyObject(MyList[0]). ... ...
MyList.Free; end; |
|
|
Bestzeller 
      
Beiträge: 48
|
Verfasst: Mi 22.04.09 21:08
Ich komm mit der Tobjectlist nicht klar, welche uses braucht man für die? Und ist es egal wenn alle Objekte darin den gleichen Namen haben? Und sprech ich das erste Objekt so an : TMyObject(MyList[0]) ?
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 22.04.09 21:16
|
|
Bestzeller 
      
Beiträge: 48
|
Verfasst: Mi 22.04.09 21:30
Danke dir , aber er kennt Tobjectlist immer noch nicht. Gibt es das schon bei Delphi 4? Wenn nein weiß ich wieso.^^
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 22.04.09 21:45
Delphi 4? Da gibts das vielleicht noch nicht. Gibts nen Grund, dass du nicht nur eine so uralte sondern auch noch eine relativ fehlerbehaftete Version benutzt?
Sonst würde ich dir Turbo Delphi empfehlen, das ist eine kostenlose Version von Delphi 2006 Professional, in die man nur keine zusätzlichen Packages installieren kann. Man muss also zusätzliche Komponenten manuell erzeugen.
Dafür sind z.B. viele Internet- und DB-Komponenten bereits dabei.
Bei dir kannst du TList benutzen, musst dich aber um die Freigabe dann selbst kümmern.
|
|
Bestzeller 
      
Beiträge: 48
|
Verfasst: Sa 25.04.09 19:24
Das liegt daran, dass wir in der Schule noch Delphi 4 haben 
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: So 26.04.09 02:21
Tja, als Lösung blieben dann die schon genannten Arrays übrig, müsste sich was zu finden lassen
Im Prinzip könntest du dir deine TObjectList auch einfach selbst programmieren. Das könntest du für den einfachen Fall noch so gestalten, dass jedes dieser Objekte einen Zeiger auf ein weiteres(seinen Nachfolger) erhält.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| type TMyObject = class(TObject) private FNext: TMyObject; public destructor Destroy; override; procedure AppendSuccessor; end;
destructor TMyObject.Destroy; begin FNext.Free; inherited Destroy; end;
procedure TMyObject.AppendSuccessor; begin FNext := TMyObject.Create; end; |
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 26.04.09 03:44
TList gibt es wie gesagt dort bereits. Nur die automatische Freigabe mit TObjectList eben nicht.
Heißt: Die Objekte müssen nicht nur in die Liste eingefügt werden, sondern beim Löschen aus der Liste auch wieder aus dem Speicher entfernt werden mit Free, genauso beim Beenden des Programms.
|
|