![]() |
AW: Auf verschiedene Instanzen eines Formulars zugreifen
so danke erstmal,
ich habe mich jetzt fürs erste für die ObjectList entschieden, habe dazu noch folgende Frage - Wenn ich der Liste eine feste Länge über Count gebe, kann ich dann in meinem Beispiel die Items 0..11 ohne Probleme ansprechen? Und was passiert wenn ich ein item wieder lösche über delete, muss ich dann das count wieder zurücksetzen? Kann es da irgendwie zu Komplikationen kommen? :D
Delphi-Quellcode:
Ich habe noch mal kurz drüber nachgedacht, kann man eigentlich nicht auch sowas wie ein
// als Beispiel
FormList.Count := 12; FormList.Items[nr] := Form; FormList.Delete(nr); Formlist.count := 12;
Delphi-Quellcode:
definieren und darin seine Forms speichern? Würde in meinem Fall vielleicht mehr Sinn ergeben :?:
FormList: Array of TObject
|
AW: Auf verschiedene Instanzen eines Formulars zugreifen
Einer Liste kannst Du Count nicht zuweisen. Die Anzahl kannst Du nur durch hinzufügen oder löschen von Einträgen ändern.
Ein Array kannst Du natürlich auch nutzen. Ist letztlich Geschmackssache. Im Handling ist aber eine Liste m.E. etwas einfacher. |
AW: Auf verschiedene Instanzen eines Formulars zugreifen
Welchen Sinn soll das haben? Wenn Du Count setzt, heißt das ja nicht, dass tatsächlich soviele Referenzen in der Liste sind, so dass Du u.U. auf nil-Pointer zugreifst.
|
AW: Auf verschiedene Instanzen eines Formulars zugreifen
Zitat:
|
AW: Auf verschiedene Instanzen eines Formulars zugreifen
Okay, danke an alle, eine Frage noch - die Definition habe ich irgenwie immer noch nicht so ganz verstanden
Zitat:
Wenn ich in einer TObjectList ein Element freigebe, aktualisiert sich diese doch auch? Oder was muss man machen damit sich diese aktualisiert? |
AW: Auf verschiedene Instanzen eines Formulars zugreifen
Mal ein schnelles Beispiel:
Delphi-Quellcode:
Eine TComponentList bekommt es mit, wenn ein Element "von außen" freigegeben wird, und aktualisiert sich dann. Bei der TObjectList ist das nicht so, das Ergebnis sind in dem Fall Dangling Pointer ("wilde Zeiger").
procedure TForm1.Button1Click(Sender: TObject);
var List: TObjectList; Button: TButton; begin List := TObjectList.Create; try Button := TButton.Create(nil); List.Add(Button); Button.Free; ShowMessage(IntToStr(List.Count)); // = 1 finally List.Free; //Bumm end; end; procedure TForm1.Button2Click(Sender: TObject); var List: TComponentList; Button: TButton; begin List := TComponentList.Create; try Button := TButton.Create(nil); List.Add(Button); Button.Free; ShowMessage(IntToStr(List.Count)); // = 0 finally List.Free; //Alles in Butter end; end; |
AW: Auf verschiedene Instanzen eines Formulars zugreifen
aso, danke, dann ist eine TComponentList wohl eher für das Speichern von Komponenten zu empfehlen ;D
Wenn ich aber sowieso nur
Delphi-Quellcode:
verwende, sollte es doch eigentlich egal sein welche ListenTyp ich nehme,
List.Delete(1)
aber es schadet ja nicht die TComponentList zu bevorzugen ;D |
AW: Auf verschiedene Instanzen eines Formulars zugreifen
Wenn Du die Objekte über die Liste freigibst, tun sich die beiden Typen tatsächlich nichts.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 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