请问tblobfield和TBlobStream是数据类型还是数据结构啊?我在提问帖子的时候各位仁兄的指教中有这两个我不太理解,请大家指教!

解决方案 »

  1.   

    TBlobField = class(TField)
      private
        FModifiedRecord: Integer;
        FModified: Boolean;
        FGraphicHeader: Boolean;
        FTransliterate: Boolean;
        function GetBlobType: TBlobType;
        function GetModified: Boolean;
        procedure LoadFromBlob(Blob: TBlobField);
        procedure LoadFromStrings(Strings: TStrings);
        procedure LoadFromStreamPersist(StreamPersist: IStreamPersist);
        procedure SaveToStrings(Strings: TStrings);
        procedure SaveToStreamPersist(StreamPersist: IStreamPersist);
        procedure SetBlobType(Value: TBlobType);
        procedure SetModified(Value: Boolean);
        function SupportsStreamPersist(const Persistent: TPersistent;
          var StreamPersist: IStreamPersist): Boolean;
      protected
        procedure AssignTo(Dest: TPersistent); override;
        procedure FreeBuffers; override;
        function GetAsString: string; override;
        function GetAsVariant: Variant; override;
        function GetBlobSize: Integer; virtual;
        function GetClassDesc: string; override;
        function GetIsNull: Boolean; override;
        procedure GetText(var Text: string; DisplayText: Boolean); override;
        procedure SetAsString(const Value: string); override;
        procedure SetText(const Value: string); override;
        procedure SetVarValue(const Value: Variant); override;
      public
        constructor Create(AOwner: TComponent); override;
        procedure Assign(Source: TPersistent); override;
        procedure Clear; override;
        class function IsBlob: Boolean; override;
        procedure LoadFromFile(const FileName: string);
        procedure LoadFromStream(Stream: TStream);
        procedure SaveToFile(const FileName: string);
        procedure SaveToStream(Stream: TStream);
        procedure SetFieldType(Value: TFieldType); override;
        property BlobSize: Integer read GetBlobSize;
        property Modified: Boolean read GetModified write SetModified;
        property Value: string read GetAsString write SetAsString;
        property Transliterate: Boolean read FTransliterate write FTransliterate;
      published
        property BlobType: TBlobType read GetBlobType write SetBlobType default ftBlob;
        property GraphicHeader: Boolean read FGraphicHeader write FGraphicHeader default True;
        property Size default 0;
      end;
      

  2.   

    TBlobStream = class(TStream)
      private
        FField: TBlobField;
        FDataSet: TBDEDataSet;
        FBuffer: PChar;
        FMode: TBlobStreamMode;
        FFieldNo: Integer;
        FOpened: Boolean;
        FModified: Boolean;
        FPosition: Longint;
        FBlobData: TBlobData;
        FCached: Boolean;
        FCacheSize: Longint;
        function GetBlobSize: Longint;
      public
        constructor Create(Field: TBlobField; Mode: TBlobStreamMode);
        destructor Destroy; override;
        function Read(var Buffer; Count: Longint): Longint; override;
        function Write(const Buffer; Count: Longint): Longint; override;
        function Seek(Offset: Longint; Origin: Word): Longint; override;
        procedure Truncate;
      end;