Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Alle Variablen eines (Klassen-)Types erkennen? (https://www.delphipraxis.net/57392-alle-variablen-eines-klassen-types-erkennen.html)

ichbins 20. Nov 2005 16:48


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...

tigerman33 20. Nov 2005 17:14

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.

ichbins 20. Nov 2005 17:21

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?

Khabarakh 20. Nov 2005 17:44

Re: Alle Variablen eines (Klassen-)Types erkennen?
 
Zitat:

Zitat von ichbins
Wenn der User sie z.B. lokal deklariert hat und sie nicht freigegeben hat, wird die free ja nicht aufgerufen...

Wenn der Programmierer so schlampig programmiert, kann er dir nicht vorwerfen, dass das Entfernen im Destruktor eine schlechte Lösung sei :wink: .

ichbins 20. Nov 2005 17:45

Re: Alle Variablen eines (Klassen-)Types erkennen?
 
wenn ich aber selber der schlampig programmierende User bin... :oops: was ist überhaupt mit solchen "vergessenen" Variablen?

tn249 20. Nov 2005 18:06

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

Flocke 20. Nov 2005 18:36

Re: Alle Variablen eines (Klassen-)Types erkennen?
 
Zitat:

Zitat von ichbins
wenn ich aber selber der schlampig programmierende User bin... :oops: was ist überhaupt mit solchen "vergessenen" Variablen?

Such mal hier im Forum nach Hier im Forum suchenMemCheck - ist eine einzige Datei, die ich auch gerne zur Fehlersuche benutze. Du musst sie einfach nur als erste Datei in der DPR-Datei einbinden und direkt nach dem Begin MemChk; aufrufen. Beispielgerüst:

Delphi-Quellcode:
program BeispielProgramm;

uses
  MemCheck,
  ...
  ;

begin
  MemChk;

end;
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.

//Nachtrag:

Hier ist die MemCheck Homepage.


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