Sebi82 hat folgendes geschrieben: |
Hallo !
Vereinfachte Problemstellung:
- Auf einer Form sind 2 Buttons.
- Ich habe ein TList Objekt "Liste"
Ich möchte beim Klick des ersten Buttons, dass meinem TList-Objekt "Liste" einfach per 'add'-Methode ein weiterer Pointer hinzugefügt wird. Soweit kein Problem.
Beim Druck auf einen zweiten Button möchte ich dann meine ganzen dereferenzierten Pointer der Liste ausgeben. Auch kein Problem.
Jedoch habe ich das TList Objekt "Liste" bisher immer global definiert. Könntet Ihr mir eine Hilfe geben, wie ich das besser lösen könnte?
Viele Grüße und Danke,
Sebi |
Hallo,
so global betrachtet ist das Vermeiden globaler Variablen um jeden Preis eine globale Dummheit. Leider melden sich hier immer wieder ideologische Eiferer, für die das Teufelszeug ist, aber es gibt in Wirklichkeit überhaupt keine Software ohne globale Variable - in Delphi z.B. ist Application global.
Für globale Objekte ist eine globale Variable immer die richtige Wahl - bei einer Werkzeugmaschine z.B. gibt es nur die eine X,Y,Z Position, die der Werktisch hat (er kann ja nicht an 2 Stellen gleichzeitig sein), also ist das sinnvollerweise auch global gespeichert und was auch immer mit der Position was zu tun hat (Anzeige z.B.) greift auf diese globale Variable zu - so sind Position und Anzeige immer konsistent. Das gleiche gilt für den Sollwert der Position - ein Softwaredesign mit mehreren Sollwerten ist in jedem Fall logisch falsch, denn der Tisch kann sich auch nur zu einer einzigen Position hinbewegen.
In deinem Fall ist das (noch) nicht klar - beide Methoden, die mit der Liste arbeiten, sind ja in der Form (bzw. die Buttons dazu), also könnte Liste problemlos ein Feld von Form sein, so ergibt sich das ja auch, wenn du eine Formkomponente auf die Form ziehst. Andrerseits, wenn Liste das Zentrale ist, was dein Programm bearbeitet, dann ist eine globale Variable durchaus angemessen.
Gruss Reinhard