RAD Studio VCL Reference
|
Indicates that this is a BLOB field.
class function IsBlob: Boolean; override;
virtual __fastcall Boolean IsBlob();
Use IsBlob when working with a TField object to determine whether it represents BLOB data. For example, before using the GetData or SetData method (which does not work with BLOB fields), call IsBlob to determine whether the method can be used. The IsBlob method for TBlobField always returns true.
C++ Examples:
/* This example requires a button, a test edit, and a populated ClientDataSet. Pipe the ClientDataSet through a DataSource to a DGGrid or DBNavigator to control the current field. Cast the data correctly according to the field type when assigning to the test edit. */ void __fastcall TForm1::Button1Click(TObject *Sender) { // Retrieve the "raw" data from Field1 if (!CDS->Fields->Fields[0]->IsBlob()) // __classid(TField) GetData does not work for BLOB fields { void *MyBuffer = malloc(CDS->Fields->Fields[0]->DataSize); try { if (!CDS->Fields->Fields[0]->GetData(MyBuffer)) MessageDlg(CDS->Fields->Fields[0]->DisplayName + "is blank.", mtInformation, TMsgDlgButtons() << mbOK,0); else // Do something with the data; Edit1->Text = reinterpret_cast<char *>(MyBuffer); // for a stringfield } __finally { free(MyBuffer); } } } void __fastcall TForm1::FormCreate(TObject *Sender) { CDS->LoadFromFile("../CDS.XML"); }
Delphi Examples:
{ This example requires a button, a test edit, and a populated ClientDataSet. Pipe the ClientDataSet through a DataSource to a DGGrid or DBNavigator to control the current field. Cast the data correctly according to the field type when assigning to the test edit. } {$IFNDEF UNICODE} uses SwSystem; {$ENDIF} procedure TForm1.Button1Click(Sender: TObject); var MyBuffer: Pointer; begin { Retrieve the "raw" data from Field1 } with CDS.Fields[0] do begin if not IsBlob then { this does not work for BLOB fields } begin { Allocate space } MyBuffer:= GetMemory(DataSize); try if not GetData(MyBuffer) then MessageDlg(DisplayName + ' is NULL', mtInformation, [mbOK], 0) else { Do something with the data }; Edit1.Text:= string(PAnsiChar(MyBuffer)); // for a stringfield finally { Free the space } FreeMem(MyBuffer, DataSize); end; end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin {$IFDEF UNICODE} CDS.LoadFromFile(GetCurrentDir + '\CDS.XML'); {$ELSE} CDS.LoadFromFile(gsAppPath + 'CDS.XML'); {$ENDIF} end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|