| Autor |
Beitrag |
Fehma
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 21.12.04 12:23
Hallo,
meine Kentnisse in Delphi sind leider nicht so gut.
Ich habe eine Klasse in Delphi und ich muß zur Laufzeit ermitteln, wieviel Speicher diese Klasse im Speicher ( Memory ) braucht.
Ich möchte ein Programm schreiben, das dann immer anzeigt wieviel Speicher gerade von Ihm belegt ist.
Ich danke euch .......
gruß
MK
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Di 21.12.04 12:39
| Fehma hat folgendes geschrieben: | | Ich möchte ein Programm schreiben, das dann immer anzeigt wieviel Speicher gerade von Ihm belegt ist. |
Schau dir vllt mal GLOBALMEMORYSTATUSEX an. Da dann den freien vom vorhandenen virtuellen Speicher abziehen, das sollte das sein, was dein programm gerade belegt.
MrSaint
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
Fehma 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 21.12.04 12:47
Leider nützt das nicht da ich ja dann nicht pro Klasse ( und ich habe mehrere Instanzen von mehreren Unterschiedlichen Klassen ) bestimmen kann, wie groß eine Instanz ist bzw wieviel Speicher sie benötigt.
Trotzdem Vielen Dank
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Di 21.12.04 12:52
Ich glaube nicht, dass du das bekommen kannst. Ich dachte du willst in erster Linie eben den Speicherverbrauch deines ganzen Progs (das solltest du mit oberer Funktion rausbekommen!) wissen und dachtest, dass du dazu eben die Größen der einzelnen Klassen haben willst.
MrSaint
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 21.12.04 13:21
TObject.InstanceSize
Returns the size in bytes of each instance of the object type.
|
|
Fehma 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 21.12.04 13:38
Hallo,
ersteinmal vielen Dank.
Tja das mit <object>.InstanceSize ist so eine Sache.
Damit bekomme ich schon eine gewisse Aussage darüber wie groß eine Klasse ist aber leider nicht genau das was ich brauche.
Denn wenn Ihr Methoden in der Klasse habt, dann werden diese Methoden nicht miteinbezogen.
InstanceSize gibt nur die Größen der verwendeten Typen, Variablen zurück....
d.h. es muss was mit der memoryVerwaltung zu tun haben
...... Hilfe !!!!
MK
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Di 21.12.04 13:39
| Luckie hat folgendes geschrieben: | TObject.InstanceSize
Returns the size in bytes of each instance of the object type. |
Oha, gut  Wusst ich noch net. Bleibt hier dann aber die Frage, ob er den Speicher, den die Methoden brauchen mitzählt oder nicht (die liegen ja pro Klassentyp nur einmal im Speicher, d.h. alle Instanzen einer Klasse benutzen die im Speicher gleichen methoden). Außerdem sagt mir meine OH noch:
| OH hat folgendes geschrieben: | | InstanceSize sollte nur im Verlauf der Implementierung einer benutzerdefinierten Version von NewInstance aufgerufen werden. |
Also ich würd nicht drauf schwören und das benutzen
MrSaint
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
Fehma 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 21.12.04 13:48
Yap,
hmmm es muss doch möglich sein zu ermitteln wie groß meine Klasse ist....
ICh habe die größen meiner Variablen, Typen = OK das kann ich ja über Sizeof() oder .InstanceSize ermitteln.
und die Methoden liegen ja ( je dachdem ) in einer VMT vor...
Da muss es doch einen weg geben, das herauszubekommen.
Ich bin für jeden Vorschlag dankbar...
MK
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Di 21.12.04 13:51
Die Methoden liegen eh nur einmal im Speicher, und alle Instanzen der Klasse teilen sich diese.. warum willst du also auch wissen wie groß die Methoden sind? Ich dachte dir reicht die Größe der Klassen-Instanz und die gekommst du eben mit InstanceSize...
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
Fehma 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 21.12.04 14:05
Nun ja,
ich will dem User später nicht einfach eine Zahl ( Größe ) vorgauckeln. Ich möchte schon die genaueste Größe darstellen.
Angenommen ich habe ein Menge Code , Referencen auf andere Klassen u.a. im Code. Da kann dann schon einigen zusammenkommen.
Daher meine Frage.
Außerdem macht es mich nun neugierig diese Information herauszubekommen. Das muss es doch geben.
Es gibt ja eine Menge Progs die das können. Dann muss es auch machbar sein ...
Gruß
MK
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Di 21.12.04 14:09
| Fehma hat folgendes geschrieben: | | Es gibt ja eine Menge Progs die das können |
Darf ich dich um ein Beispiel bitten?
AXMD
|
|
Fehma 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 21.12.04 14:14
Ja kein Problem.
Der Code zeigt zwei Klassen. Die erster hat eine Referenz auf die Zweite.
Der Code in den Methoden ist eigenlicht egal. Nimm aber einfach an das dort wiederum Variablen und anderes ausgeführt wird.
Dafür will ich dann die Größe haben.....
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| TMyClass = class(TObject) private FField: Integer; FField1: Integer; FField2: TMyClass2; public function NewMethod: Integer; procedure NewMethod1; procedure NewMethod2; end;
TMyClass2 = class(TObject) private FField: Integer; FField1: Integer; public procedure TueWas; end; |
Danke MK
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Di 21.12.04 14:18
Ich glaube AXMD wollte ein Beispiel für ein prog, das sowas kann 
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Di 21.12.04 14:23
| MrSaint hat folgendes geschrieben: | Ich glaube AXMD wollte ein Beispiel für ein prog, das sowas kann  |
So ist es
AXMD
|
|
Fehma 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 21.12.04 14:24
Habe Hier leider keine Möglichkeit eine Email zu schreiben.
Habe Dir das aber noch mal als PN geschickt......
Sorry
MK
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Di 21.12.04 14:30
Ich glaub du verstehst nicht, was ich dir sagen will  Du sollst mir ein Programm sagen (den Namen, also zB MS Word), das sowas macht...
AXMD
|
|
Fehma 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 21.12.04 14:33
Hee hee he
sieht den Wald vor Bäumen nicht...
Bin gerade so tief darin.... nun ja...
Also, zum Beispiel:
YBrowser = Tool für Powerbuilder
Hmm da war noch ein Tool wie AQTime aber an den Namen kann ich mich nicht erinnern.....
MK.....
|
|