![]() |
AW: Unterschied zwischen nil, FreeAndNil und Free in TForm
Im Prinzip wurden diese Variablen wohl nur angelegt, damit man die anderen Forms erreichen konnte, wenn man alle Forms automatisch erstellen lässt.
Aber am Liebsten würde ich die auch abschaffen oder zumindestens anders implementieren wollen. |
AW: Unterschied zwischen nil, FreeAndNil und Free in TForm
Zitat:
Mit dieser Variablen zu arbeiten ist deshalb unüberlegt, weil man sich damit verwehrt, mal mehr als eine Instanz eines solchen Forms zu haben (das soll in der Tat vorkommen). |
AW: Unterschied zwischen nil, FreeAndNil und Free in TForm
Moment. Bevor Ihr Euch weiter über die Vewendung globaler Variablen auslasst, lest zuvor bitte alle (!) existierenden Threads zu diesem Thema. Wenn Ihr danach dann noch etwas substantiell Neues beizutragen habt, dann gern her damit.
|
AW: Unterschied zwischen nil, FreeAndNil und Free in TForm
Ich wollte keine Diskussion über Sinn und Unsinn globaler Variablen anzetteln, sondern die korrekte Beantwortung einer Frage in den Mittelpunkt stellen: Eine Frage nach dem Unterschied zwischen drei Codezeilen sollte man mit der Erklärung des Unterschiedes der drei Codezeilen beantworten und nicht mit einem "Alles Käse". Zumindest war das mein Eindruck der Antworten.
Zitat:
Ach, und das es 'falsch' ist, kann auch nicht stimmen: Etwas 'falsches' funktioniert i.A. nicht (Das ist mein Verständnis von 'falsch'). Es ist einfach nicht state-of-the-art, ebenso wie ein Verbrennungsmotor, Plastiktüten oder Schnurrbärte (oder sind die wieder In?); Trotzdem lebt man damit. Man fährt auf lange Sicht nicht gut mit diesen Dingen, denn sie sind nicht nachhaltig, beinhalten Stolperfallen, machen einem das Leben schwer usw. Wobei Schnurrbärte auch bald wieder in Mode sein werden. |
AW: Unterschied zwischen nil, FreeAndNil und Free in TForm
Zitat:
Kannst du ein konkretes Beispiel mit dem Unterschied zwischen "globalen Variablen für die Forms" und "globalen Variablen für diese Formklasse". Und natürlich noch ein drittes Beispiel, wo aufzeigt wie du ein Form/eine Formklasse behandelst :) Danke :thumb: |
AW: Unterschied zwischen nil, FreeAndNil und Free in TForm
Delphi-Quellcode:
Wenn man basierend auf dem RAD Ansatz programmiert ist daran erst einmal nichts auszusetzen, leider verstehen die wenigsten diesen Ansatz, brechen die Vereinbarungen (auf die man sich mit RAD einlässt) und wundern sich warum das nicht funktioniert.
type
TForm1 = class( TForm ) Edit1 : TEdit; procedure Foo; end; var Form1 : TForm1; implementation uses Form2Unit; procedure TForm1.Foo; begin // globale Variable für die Forms Form2.Show; // globale Variable für diese Formklasse Form1.Edit1.Text := 'Foo'; // Bezug auf die Instanz, die in der Variablen Form1 hinterlegt ist // wenn schon, dann Self.Edit1.Text := 'Foo'; // Bezug auf die eigene Instanz // oder einfach Edit1.Text := 'Foo'; // Bezug auf die eigene Instanz end; RAD-Vereinbarungen:
|
AW: Unterschied zwischen nil, FreeAndNil und Free in TForm
Zitat:
Sichtbar war dabei die erste Instanz, aber in der Variable stand die zweite Instanz, weil die ja zuletzt die Variable überschrieb. Der Benutzer schrieb also was in Instanz 1, aber via Form1-Variable war das Geschriebene ntürlich nicht vorhanden. Oder man erstellt die Form mal dynamisch, weist aber nix der globalen Variable zu, sondern nutzt z.B. nur eine lokale Variable, oder gar blos ein WITH, weil die Form nur innerhalb einer Ereignismethode "kurz" verwendet und dann die Form sofort wieder freigegeben wird. |
AW: Unterschied zwischen nil, FreeAndNil und Free in TForm
Um ehrlich zu sein bin ich seit Tagen etwas verwirrt, weil ich nicht wirklich weiß ob ich das Problem verstehe. Geht es bei den globalen Form-Variablen um Grundlagen-Fragen, so dass ich die Frage nur an der falschen Stelle, also zu hoch ansetzte? Oder geht es hier um höhere Programmierung, ich also das Spezielle nicht erkenne?
|
AW: Unterschied zwischen nil, FreeAndNil und Free in TForm
Wenn es sich um eine RAD-Anwendung handelt, dann ist die Verwendung der globalen Form-Variablen erlaubt (gehören ja zum Konzept), aber nur lesend und die Instanzen müssen tabu sein (gehört ebenfalls zum Konzept).
Die Ausgangsfrage: Zitat:
In einer nicht RAD-Anwendung ist der erste Punkt erlaubt aber die anderen beiden Punkte sind falsch, denn dort sind die globalen Form-Variablen absolut tabu (am besten werden die sofort gelöscht). Es gibt auch noch so einen Mischmasch aus RAD und nicht RAD, den würde ich aber dringend empfehlen zu eliminieren. Also nur das Haupt-Formular (auch zu finden auch unter
Delphi-Quellcode:
) wird zum Anwendungsstart erzeugt, alle anderen dynamisch.
Application.MainForm
|
AW: Unterschied zwischen nil, FreeAndNil und Free in TForm
Danke für die super und sehr ausführliche Erklärung Sir Rufo :thumb: :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 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