AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi An Speicher eine Komponente rankommen
Thema durchsuchen
Ansicht
Themen-Optionen

An Speicher eine Komponente rankommen

Ein Thema von glkgereon · begonnen am 12. Aug 2005 · letzter Beitrag vom 13. Aug 2005
Antwort Antwort
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

An Speicher eine Komponente rankommen

  Alt 12. Aug 2005, 19:15
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...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: An Speicher eine Komponente rankommen

  Alt 12. Aug 2005, 19:25
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:
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;
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.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: An Speicher eine Komponente rankommen

  Alt 12. Aug 2005, 20:15
es geht mit weniger ums laden als vielmehr ums vergleichen.

kann ich denn einfach alle nicht-pointer-eigenschaften einer klasse rauskriegen?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: An Speicher eine Komponente rankommen

  Alt 12. Aug 2005, 21:08
Zitat von glkgereon:
kann ich denn einfach alle nicht-pointer-eigenschaften einer klasse rauskriegen?
Das geht nur mit Ablesen.

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.
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#5

Re: An Speicher eine Komponente rankommen

  Alt 13. Aug 2005, 09:26
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.
Christian
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: An Speicher eine Komponente rankommen

  Alt 13. Aug 2005, 10:05
Zitat von tigerman33:
Damit müsstest du dann ja auch die ganzen properties schreiben können.
Nur die published properties, wie ich ja bereits geschrieben habe. WriteComponent nutzt auch nur die RTTI.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#7

Re: An Speicher eine Komponente rankommen

  Alt 13. Aug 2005, 10:50
wie gesagt, ich will nur auslesen, nicht nachher wieder in die kompo reintuen^^
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz