type TWideMemoField = class(TBlobField) private function GetAsWideString: WideString; procedure SetAsWideString(const Value: WideString); public property AsWideString: WideString read GetAsWideString write SetAsWideString; end;
implementation
{ TWideMemoField }
function TWideMemoField.GetAsWideString: WideString; var Len:Integer; begin with DataSet.CreateBlobStream(Self, bmRead) do try Len := Size div 2; SetLength(Result, Len); if Length(Result) > 0 then ReadBuffer(PWideChar(Result)^, Size); finally Free; end; end;
procedure TWideMemoField.SetAsWideString(const Value: WideString); begin with DataSet.CreateBlobStream(Self, bmWrite) do try WriteBuffer(PWideChar(Value)^, Length(Value) * 2); finally Free; end; end;