System.Classes.TReader.DefineBinaryProperty

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

procedure DefineBinaryProperty(const Name: string;
ReadData, WriteData: TStreamProc;
HasData: Boolean); override;

C++

virtual void __fastcall DefineBinaryProperty(const System::UnicodeString Name, TStreamProc ReadData, TStreamProc WriteData, bool HasData);

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
procedure
function
public
System.Classes.pas
System.Classes.hpp
System.Classes TReader

Beschreibung

Definiert binäre Daten, die das Reader-Objekt so liest, als ob es sich um eine published-Eigenschaft handeln würde.

DefineBinaryProperty wird intern von der Methode DefineProperties eines Objekts aufgerufen, das Daten enthält, die gespeichert werden müssen. Anwendungen können DefineBinaryProperty direkt aufrufen, wenn die Methode DefineProperties einer Komponente mit umfangreichen benutzerdefinierten Daten (z.B. Bitmaps) überschrieben wird. DefineBinaryProperty (oder DefineProperty) werden ausschließlich in diesem Kontext verwendet.

DefineProperties verwendet ein generisches Filer-Objekt als Parameter. Beim Lesen von binären Daten übernimmt DefineProperties ein TReader-Objekt und ruft die Methode DefineBinaryProperty auf. Anschließend liest DefineBinaryProperty den Namen der Eigenschaft und übergibt die Daten an die mit ReadData vorgegebene Methode.

Der Parameter Name bezeichnet den Namen der verborgenen Eigenschaft, die aus dem Stream gelesen werden soll. Diese Eigenschaft wurde nicht als public deklariert und existiert nur im Quelltext der Methode DefineBinaryProperty. Beispiele für Eigenschaften dieses Typs sind die Eigenschaften Top und Left einer nichtvisuellen Komponente. Sie werden auch als benutzerdefinierte Eigenschaften bezeichnet.

Die Parameter ReadData und WriteData verweisen auf eine Prozedur (definiert im speichernden Objekt), welche die binäre Repräsentation der Objektdaten liest oder schreibt, und zwar direkt in bzw. aus dem Stream, der im Parameter TStream übergeben wurde. Bei TReader wird der Parameter WriteData ignoriert.

Der Parameter HasData bestimmt zur Laufzeit, ob die Eigenschaft Daten enthält, die gespeichert (geschrieben) werden müssen. Bei TReader wird der Parameter HasData ignoriert.

Definierte binäre Eigenschaften sind selten. Gängige Objekte verwenden die Methode DefineProperty. Der Unterschied zwischen DefineBinaryProperty und DefineProperty liegt darin, dass die binäre Eigenschaft direkt aus einem Stream gelesen wird, anstatt ein Filer-Objekt zu durchsuchen. Zudem lassen sich binäre Daten nicht so einfach bearbeiten wie Text.

Anmerkung:  Stream-fähige Objekte, die von TPersistent abstammen, erben eine Methode DefineProperties, die jedoch erst in TComponent eine Funktionalität besitzt. Deshalb ist es die Methode DefineProperties der Komponente, die zum Lesen binärer Daten die Methode DefineBinaryProperty des Readers aufruft.

Siehe auch