![]() |
An Speicher eine Komponente rankommen
hi
kann ich irgendwie an den Speicher, den eine Komponente belegt drankommen? also nicht die größe sondern den Inhalt. Am besten einfach als Stream... |
Re: An Speicher eine Komponente rankommen
Das geht recht einfach. Aber die Komponente wirst du trotzdem nicht einfach in einen Stream schreiben können, denn wenn man einen Zeiger auflöst (Zugriff auf "Speicher" der Komponente) bekommt man tausende neue Zeiger.
Delphi-Quellcode:
Aber wie schon geschrieben, dass wird dir nichts bringen, denn damit würdest du in diesem Fall 12 Bytes schreiben (4 für den VMT Zeiger, 4 für "Next" und 4 für "List". Wenn du dass dann wieder lädst, hast du 3 Zeiger die ins Nirwana zeigen.
type
TMyComp = class(TObject) private Next: TMyComp; List: TList; public constructor Create; destructor Destroy; override; end; var Buf: array of Byte; Comp: TMyComp; begin Comp := TMyComp.Create; try Stream.Write(Pointer(Comp)^, Comp.InstanceSize); finally Comp.Free; end; end; |
Re: An Speicher eine Komponente rankommen
es geht mit weniger ums laden als vielmehr ums vergleichen.
kann ich denn einfach alle nicht-pointer-eigenschaften einer klasse rauskriegen? |
Re: An Speicher eine Komponente rankommen
Zitat:
Bei den published-Eigenschaften geht das dann schon, da der Compiler dafür Runtime Type Information erzeugt, die mittels der Funktionen aus der undokumentierten Unit TypInfo.pas ausgelesen werden können. |
Re: An Speicher eine Komponente rankommen
Es gibt doch eine Methode, die die VCL benutzt um die Designer-Informationen wegzuschreiben. Nennt sich glaub ich WriteComponent und ist entweder eine Methode von TComponent oder TStream (ich glaub aber letzteres). Damit müsstest du dann ja auch die ganzen properties schreiben können.
|
Re: An Speicher eine Komponente rankommen
Zitat:
|
Re: An Speicher eine Komponente rankommen
wie gesagt, ich will nur auslesen, nicht nachher wieder in die kompo reintuen^^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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