TurboDB VCL Komponenten Bibliothek

TTdbBlobProvider.RegisterBlobFormat Class Method

TTdbBlobProvider

Previous  Top  Next

Registriert ein Bild Format.

Delphi Syntax:

class procedure RegisterBlobFormat(BitMask, Pattern: Int64; const Tag, Name: string; Format: TTdbBlobFormat; GraphicClass: TGraphicClass);

C++ Syntax:

virtual static void __fastcall RegisterBlobFormat(int64 BitMask, int64 Pattern, System::String Tag, System::String Name, TGraphicClass * GraphicClass);

Parameter

BitMask

64-Bit Maske um die Muster Bits aus den ersten acht Bytes der Blob-Daten zu extrahieren

Pattern

64-Bit Muster um die aus den Blob-Daten extrahierten Bit-Muster zu vergleichen

Tag

Kurzname für das Format, z.B. bmp, wav, wmf, gif, png, jpg

Name

Langer lesbarer Name für das Format, z.B. Windows Meta File

Format

Nummerischer Wert zur Identifikation des Blob-Formats, muss innerhalb der Tabelle eindeutig sein

GraphicClass

Klassen Objekt eines TGraphic Abkömmlings, der fähig ist das Format mit  ReadData und WriteData zu verarbeiten

Beschreibung

Standardmäßig kann der Blob-Provider Bitmaps, Windows Meta Files und Wave Dateien extrahieren. Weitere Bildformate wie gif, png, jpeg etc. können durch Registrieren des Formats und einer geeigneten Grafik-Klasse hinzugefügt werden. Beim Laden eines Blobs führt der Blob-Provider eine bitweise And-Operation für die ersten vier Bytes des Blobs mit BitMask durch  und Vergleicht das ERgebnis mit Pattern. Bei Übereinstimmung erzeugt er eine Instanz der Grafik-Klasse, verknüpft einen Stream zum Lesen des Blobs damit und ruft die ReadData Methode auf. Die resultierende Grafik wird dann an das Picture-Objekt der Eigenschaft Picture übergeben.

Der Blob-Provider liest die ersten acht Bytes der Blob-Daten als 64 Bit Integer Zahl, daher müssen die Pattern Bytes entgegengesetzt der physikalischen Reihenfolge angegeben werden, der Little-Endian-Konvention geschuldet.

Beispiel

Dieser Code registriert die GIF, JPEG und PNG Formate für den Blob-Provider

ImageBlobProvider.RegisterBlobFormat($ffff$d8ff'JPG''JPEG Image', tbfJPG, TJpegImage);
ImageBlobProvider.RegisterBlobFormat($ffffffff$38464947'GIF''GIF Image', tbfGIF, TGifImage);
ImageBlobProvider.RegisterBlobFormat($ffffffffffffffff$0a1a0a0d474e5089'PNG''PNG Image', tbfPNG, TPngImage);

Siehe auch

LoadBlob method
Picture property