![]() |
Alle Variablen eines (Klassen-)Types erkennen?
Hallo,
ich habe gerade eine Klasse (in einer eigenen Unit) erstellt, und ich möchte unbedingt die Kontrolle über alle Variablen dieses Typs behalten. Ich hab mir überlegt dass ich in der Unit ein dyn. Array speichere und in der create einen Pointer auf die Variable dazuspeichere. Aber wann soll ich die Variable wieder aus dem Array entfernen? Wenn der User sie z.B. lokal deklariert hat und sie nicht freigegeben hat, wird die free ja nicht aufgerufen... |
Re: Alle Variablen eines (Klassen-)Types erkennen?
Wozu brauchst du unbedingt die Kontrolle? Normalerweise ist der Programmierer ja--aus gutem Grund--selbst dafür verantwortlich.
Aber sieh dir mal Interfaces an. Die haben AFAIR einen Reference Counter. |
Re: Alle Variablen eines (Klassen-)Types erkennen?
es handelt sich um tfile-Variablen. Ich will es dem Programmierer (=mir) erleichtern, die einzelnen Variablen freizugeben, die z.B. Dateien in dem Ordner geöffnet haben, der gelöscht werden soll.
Hast du mir ein Beispiel zu interfaces? |
Re: Alle Variablen eines (Klassen-)Types erkennen?
Zitat:
|
Re: Alle Variablen eines (Klassen-)Types erkennen?
wenn ich aber selber der schlampig programmierende User bin... :oops: was ist überhaupt mit solchen "vergessenen" Variablen?
|
Re: Alle Variablen eines (Klassen-)Types erkennen?
Das mit den vergessenen Variablne ist so wie mitm Geschirrspülen. Wenn du immer Geschirr ausm Regal nimmst und es nie abwäscht (oder wahlweise in die Spülmaschine steckst) hast du irgendwann kein sauberes mehr. Und dann kannst du dir kein sauberes mehr nehmen wenn dus brauchst.
Beim Programmieren ist das Geschirr der Arbeitsspeicher und wenn der voll ist kannst du keine neuen variablen mehr anlegen, andere Programme übrigens auch nicht. Ausserdem ist es sehr unordentlich (=schlechter Programmierstil) sein dreckiges Geschirr immer rumliegen zu lassen. Gruß Thomas |
Re: Alle Variablen eines (Klassen-)Types erkennen?
Zitat:
![]()
Delphi-Quellcode:
Beim Programmende kriegst du dann eine Liste mit allen nicht freigegebenen Datenbereichen (u.a. also auch den Objekten). Wenn du Debug-Informationen in die EXE-Datei einbindest, dann bekommst du sogar die Stellen geliefert, von denen aus der Speicher belegt wurde.
program BeispielProgramm;
uses MemCheck, ... ; begin MemChk; end; //Nachtrag: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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