![]() |
Erstellen von Objektlisten während des Programmablaufs
Hallo DP'ler,
ich habe eine typisierte Objektliste. Beim Programmstart weis ich noch nicht wie viele während des Programmablauf von diesen Listen erstellt werden müssen (Usereingabe). Normalerweise werden Objektlisten in variablen hinterlegt und in FormCreate erstellt. Wie mache ich das wenn die Anzahl nicht bekannt ist. (Ich hoffe dass ich mich einigermaßen verständlich ausgedrückt habe.) Danke und Gruß Dieter |
Re: Erstellen von Objektlisten während des Programmablaufs
Verwalte die Objektlisten doch auch in einer Objektliste.
|
Re: Erstellen von Objektlisten während des Programmablaufs
...oder erstelle die Objektlisten erst wenn der Benutzer die Anzahl eingegeben hat. Dann ist die Anzahl ja wieder bekannt.
Gibt es zwingende Gründe, warum sie unbedingt in FormCreate erstellt werden müssen? |
Re: Erstellen von Objektlisten während des Programmablaufs
versuch mal mit nen dynamischen array vom entsprechenden typ der jedesmal wenn ein neues objekt hinzugefügt wird die länge um 1 erhöht. funcs bei mir eig immer recht gut. zumi bei labelsund änlichen. wie das bei objektlisten aussieht ka, sollte aba auch funcsen
|
Re: Erstellen von Objektlisten während des Programmablaufs
erstmal Danke für die Antworten.
@Lucki Funktioniert denn das ? Wie spreche ich denn die einzelnen objekte über diese Listen an den ich habe ja dann eine Liste für die Listen und wie kann ich die einzelnen Objektlisten auseinanderhalten. Welche Liste soll man dafür verwenden TList oder TObjektlist. Meine Listen sind alle von Typ TObjectlist. Hast du eventuell ein Beispiel für mich. @ Alfi001 Da liegt das Problem, der User weis die Anzahl die er benötigt auch nicht. Nein die Listen müssen nicht unbedingt in der FormCreate erstellt werden. @tabl Dynamischer Array ? Für das verwalten der einzelnen Objekte benutze ich ja diese Objektlisten, ob man diese in einem Dynamischer Array wiederum verwalten kann? Hab ich noch nie Probiert. Hast du eventuell ein kurzes Beispiel zur Hand? Gruß Dieter |
Re: Erstellen von Objektlisten während des Programmablaufs
Beispiel:
Delphi-Quellcode:
FMeineListen := TObjectList.Create;
for i := 0 to Anzahl - 1 do FMeineListen.Add(TObjectList.Create); function GetObjectList(AIndex: Integer): TObjectList; begin Result := FMeineListen[AIndex] as TObjectList; end; GetObjectList(5).Add(TMeinObject.Create); MeinObject := GetObjectList(5)[1] as TMeinObject; |
Re: Erstellen von Objektlisten während des Programmablaufs
Zitat:
Was ich meinte: An irgeneiner Stelle wird das Programm doch wissen "ich brauche jetzt 3 Listen". Erstell einfach an der Stelle, an der die Anzahl feststeht die Listen. (EGAL wie die Anzahl festgelegt wurde, durch Eingabe oder Berechnung oder sonstwie) |
Re: Erstellen von Objektlisten während des Programmablaufs
Danke Blup für dein Beispiel, wenn das so funkt wär das eine Lösung.
Ich habe gerade was gelesen, dass es eine TClasslist gibt, kennt sich jenmand damit aus. Hat diese Liste Vorteile gegeüber einer Objektliste bei der Verwaltung von Objektlisten. @Alfi001 Der User kann sich jederzeit entscheiden noch eine Objektliste anzufangen, deshalb ist es nicht möglich dies abzufragen, zu berechnen oder sonstwie zu erfahren. Gruß Dieter |
Re: Erstellen von Objektlisten während des Programmablaufs
Du sprichst die ObjektListen wie in einem Array an. Da die Objekte in der Liste ja auch Objektlisten sind hast du praktisch ein zweidimensionales Array. Arrays würde ich nicht nehmen, da du dich da immer um den Speicher beim Freigeben kümmern musst. Eventuell hilft dir auch mein Tutorial über Containerklassen, denn das ist genau das, was du machen willst:
![]() |
Re: Erstellen von Objektlisten während des Programmablaufs
Zitat:
|
Re: Erstellen von Objektlisten während des Programmablaufs
Zitat:
Da eine Variable vom Typ deiner von TObjectList abgeleiteten Klasse selbst auch wieder nur ein Objekt ist, kannst du sie ebenfalls in einer anderen Objektliste abspeichern. Eine TClassList ist jedoch eine Liste von Klassen, also Object-Typen, nicht von Objekten selbst. Das ist z.B. praktisch, wenn eine Klasse alle von ihr abgeleiteten Klassen kennen soll. Dann wird eine statische Klassenvariable vom Typ TClassList in der Basisklasse angelegt, und für jede abgeleitete Klasse ein Eintrag dort angelegt (am besten im initialization-Abschnitt). |
Re: Erstellen von Objektlisten während des Programmablaufs
Danke erstmal, ich hab das soweit verstanden, glaub ich jedenfalls.
Also ich erstelle eine Untypesierte Objektliste (mainliste) in einer Variablen für meine Typysierten ObjectListen. Über diese mainliste kann ich meine Objektlisten ansprechen und auf die eigentlichen Objekte zugreifen. Das werde ich mal ausprobieren, ob ich damit zurechtkomme, falls nicht melde ich mich wieder. Danke Luckie für den Link. Gruß Dieter |
Re: Erstellen von Objektlisten während des Programmablaufs
Ich würde eine typisierte nehmen, dann kannst du nicht versehentlich ein anderes Objekt in der Liste ablegen.
|
Re: Erstellen von Objektlisten während des Programmablaufs
Hallo zusammen
muss mich noch mal melden, denn ich habe Probleme mit den Variablen für die Objektlisten Turnierliste ->KOSystemSpieleListe ->Spielerliste ->DoppelKOSpieleListe ->Spielerliste natürlich gibt es zu jeder Liste auch ein Objekt wobei das Objekt Spiel in den Spielelisten gleich ist so sieht der Aufbau im Hintergrund aus wie bekomme ich das nun mit den Variablen geregelt, da ich ja jede Liste in einer Variablen erstellen muss, ich aber nicht weis wie viele Turniere und welchen Turniertyp der User startet. Daher kenne ich auch nicht die Anzahl der einzelnen Spielerlisten. Hat jemand eine Lösung für dieses Problem? Bin noch ziemlich ungeübt mit dem Umgang von OOP. @Luckie ich wollte eine untypisierte Turnierliste da dort wie du siehst verschiedene Spielelisten geführt werden sollen(da habe ich aber auch noch Erklärungsbedarf, da ich nicht weis wie ich die einzelnen Turniere ansprechen soll.) Gruß Dieter |
Re: Erstellen von Objektlisten während des Programmablaufs
Na ja:
Delphi-Quellcode:
Liefert dir die Objektliste in der Objektliste.
MyObjectList := ContainerObjectListe.Items[i]
Dann müsste
Delphi-Quellcode:
dir das Objekt in der Objektliste zurückgeben.
MyObject := MyObjectList.Items[j]
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz