Variablen initialisieren

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Variablen initialisieren

Beitrag von Marc »

Hallo Zusammen

Es ist mir noch nicht richtig klar wann ich am besten meine Variablen initialisiere.
Ich habe das früher mit einer Timer komponente gemacht. Dann die Date auf die ganzen Tedit ausgegeben. Und den Timer gestoppt.
Funktioniert, ist aber etwas umständlich.

Im Moment mache ich das bei Form create und dann die Tedit ausgeben.
Klappt auch.

Aber ist es so richtig gemacht oder gibts noch eine elegantere Lösung?
Good code comes from experience, experience comes from bad code.

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Variablen initialisieren

Beitrag von braunbär »

Das kann man nicht so allgemein sagen.

An und für sich sollte man die Initialisierungen im OnCreate einer Form machen. Alle Unterkomponenten der Form sind zu diesem Zeitpunkt bereits erstellt.
Wenn allerdings der Programmierer einer Komponente irgend welche Initialisierungen timergesteuert (oder im onIdle oder sonstwie verzögert) zu einem späteren Zeitpunkt macht, dann bist du im FormCreate zu früh dran, da ist dann diese Komponente noch nicht "fertig".

Wenn irgend welche Initialisierungen zeitaufwändig sind, ist es eine natürlich gute Idee, die zu einem späteren Zeitpunkt oder in einem parallel zum Hauptprozess gestartetem Prozess zu machen, und über ein Flag anzuzeigen, wenn die Komponente "betriebsbereit" ist.

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Variablen initialisieren

Beitrag von Marc »

Danke für die Antwort.
Dann stimmt das so.
Das mit dem Timer hab ich nur zur Not gemacht weil ich Oncreate noch nicht kannte.
Good code comes from experience, experience comes from bad code.

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Variablen initialisieren

Beitrag von Mathias »

Das Gegenstück von OnCreate wäre dann OnDestroy. Wen du Klassen OnCreate erzeugst, gibt man diese in OnDestroy wieder frei.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Variablen initialisieren

Beitrag von Marc »

Danke auch für diese Antwort.
Das mache ich bis jetzt noch gar nicht.
Ich schliesse die forms einfach mit close.
Wird der Speicher so nicht freigegeben?
Muss das mal ausprobieren.
Good code comes from experience, experience comes from bad code.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Variablen initialisieren

Beitrag von af0815 »

Marc hat geschrieben:Wird der Speicher so nicht freigegeben?
Muss das mal ausprobieren.


Dann probier mal gleich die Buildmodes aus, im Debugmodus siehst dann gleich deine Speicherleichen. Das ganze findet man in den Projekteinstellungen.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Variablen initialisieren

Beitrag von Mathias »

Ich schliesse die forms einfach mit close.

Wen man im HauptForm Close aufruft, wir in jedem Form das OnDestroy-Ereigniss aufgerufen.
Wen man aber das Programm brutal mit "Halt" beendet, dann wird nichts mehr aufgerufen, aus diesem Grund sollte man nie so beenden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Variablen initialisieren

Beitrag von Marc »

Danke für die vielen Antworten.

Ist schon fast zu viel Detail für Anfänger.
Ich beende die Fenster mit 'close' das müsste gut sein.

Wenn man die Fenster schliesst ist die Arbeit ja schon gemacht.
Riesen Speicherleichen kann ich nicht zurücklassen da ich mit Lazarus (wie es scheint) keine grossen Bilder (>100MB) verarbeiten kann.
Hat jetzt aber mit der Frage nichts mehr zu tun.

Zum 'debuggen' nehm ich ein Memo fenster, da geb ich aus was mich gerade interessiert.
Bestimmt ein Schenkelklopfer, aber für Anfänger reicht das.
Good code comes from experience, experience comes from bad code.

Antworten