mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 12:19:18 +02:00
fcl-db: base: implements AsBytes for TBlobField
git-svn-id: trunk@25294 -
This commit is contained in:
parent
9cf1ef90cd
commit
721d695ae4
@ -864,15 +864,17 @@ type
|
|||||||
Function GetBlobStream (Mode : TBlobStreamMode) : TStream;
|
Function GetBlobStream (Mode : TBlobStreamMode) : TStream;
|
||||||
protected
|
protected
|
||||||
procedure FreeBuffers; override;
|
procedure FreeBuffers; override;
|
||||||
|
function GetAsBytes: TBytes; override;
|
||||||
function GetAsString: string; override;
|
function GetAsString: string; override;
|
||||||
function GetAsVariant: Variant; override;
|
function GetAsVariant: Variant; override;
|
||||||
|
function GetAsWideString: WideString; override;
|
||||||
function GetBlobSize: Longint; virtual;
|
function GetBlobSize: Longint; virtual;
|
||||||
function GetIsNull: Boolean; override;
|
function GetIsNull: Boolean; override;
|
||||||
procedure GetText(var TheText: string; ADisplayText: Boolean); override;
|
procedure GetText(var TheText: string; ADisplayText: Boolean); override;
|
||||||
|
procedure SetAsBytes(const AValue: TBytes); override;
|
||||||
procedure SetAsString(const AValue: string); override;
|
procedure SetAsString(const AValue: string); override;
|
||||||
procedure SetText(const AValue: string); override;
|
procedure SetText(const AValue: string); override;
|
||||||
procedure SetVarValue(const AValue: Variant); override;
|
procedure SetVarValue(const AValue: Variant); override;
|
||||||
function GetAsWideString: WideString; override;
|
|
||||||
procedure SetAsWideString(const AValue: WideString); override;
|
procedure SetAsWideString(const AValue: WideString); override;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
@ -2737,7 +2737,7 @@ end;
|
|||||||
|
|
||||||
{ TBlobField }
|
{ TBlobField }
|
||||||
|
|
||||||
Function TBlobField.GetBlobStream(Mode : TBlobStreamMode) : TStream;
|
function TBlobField.GetBlobStream(Mode: TBlobStreamMode): TStream;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result:=FDataset.CreateBlobStream(Self,Mode);
|
Result:=FDataset.CreateBlobStream(Self,Mode);
|
||||||
@ -2748,6 +2748,24 @@ procedure TBlobField.FreeBuffers;
|
|||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TBlobField.GetAsBytes: TBytes;
|
||||||
|
var
|
||||||
|
Stream : TStream;
|
||||||
|
Len : Integer;
|
||||||
|
begin
|
||||||
|
Stream := GetBlobStream(bmRead);
|
||||||
|
if Stream <> nil then
|
||||||
|
try
|
||||||
|
Len := Stream.Size;
|
||||||
|
SetLength(Result, Len);
|
||||||
|
if Len > 0 then
|
||||||
|
Stream.ReadBuffer(Result[0], Len);
|
||||||
|
finally
|
||||||
|
Stream.Free;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
SetLength(Result, 0);
|
||||||
|
end;
|
||||||
|
|
||||||
function TBlobField.GetAsString: string;
|
function TBlobField.GetAsString: string;
|
||||||
var
|
var
|
||||||
@ -2756,7 +2774,7 @@ var
|
|||||||
begin
|
begin
|
||||||
Stream := GetBlobStream(bmRead);
|
Stream := GetBlobStream(bmRead);
|
||||||
if Stream <> nil then
|
if Stream <> nil then
|
||||||
With Stream do
|
with Stream do
|
||||||
try
|
try
|
||||||
Len := Size;
|
Len := Size;
|
||||||
SetLength(Result, Len);
|
SetLength(Result, Len);
|
||||||
@ -2776,7 +2794,7 @@ var
|
|||||||
begin
|
begin
|
||||||
Stream := GetBlobStream(bmRead);
|
Stream := GetBlobStream(bmRead);
|
||||||
if Stream <> nil then
|
if Stream <> nil then
|
||||||
With Stream do
|
with Stream do
|
||||||
try
|
try
|
||||||
Len := Size;
|
Len := Size;
|
||||||
SetLength(Result, (Len+1) div 2);
|
SetLength(Result, (Len+1) div 2);
|
||||||
@ -2799,7 +2817,8 @@ begin
|
|||||||
s := GetAsString;
|
s := GetAsString;
|
||||||
result := s;
|
result := s;
|
||||||
end
|
end
|
||||||
else result := Null;
|
else
|
||||||
|
result := Null;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -2807,29 +2826,29 @@ function TBlobField.GetBlobSize: Longint;
|
|||||||
var
|
var
|
||||||
Stream: TStream;
|
Stream: TStream;
|
||||||
begin
|
begin
|
||||||
Stream := GetBlobStream(bmread);
|
Stream := GetBlobStream(bmRead);
|
||||||
if Stream <> nil then
|
if Stream <> nil then
|
||||||
With Stream do
|
with Stream do
|
||||||
try
|
try
|
||||||
Result:=Size;
|
Result:=Size;
|
||||||
finally
|
finally
|
||||||
Free;
|
Free;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
result := 0;
|
Result := 0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TBlobField.GetIsNull: Boolean;
|
function TBlobField.GetIsNull: Boolean;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
If Not Modified then
|
if Not Modified then
|
||||||
result:= inherited GetIsnull
|
Result:= inherited GetIsNull
|
||||||
else
|
else
|
||||||
With GetBlobStream(bmread) do
|
with GetBlobStream(bmRead) do
|
||||||
try
|
try
|
||||||
Result:=(Size=0);
|
Result:=(Size=0);
|
||||||
Finally
|
finally
|
||||||
Free;
|
Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -2841,12 +2860,26 @@ begin
|
|||||||
TheText:=inherited GetAsString;
|
TheText:=inherited GetAsString;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TBlobField.SetAsBytes(const AValue: TBytes);
|
||||||
|
var
|
||||||
|
Len : Integer;
|
||||||
|
begin
|
||||||
|
with GetBlobStream(bmWrite) do
|
||||||
|
try
|
||||||
|
Len := Length(AValue);
|
||||||
|
if Len > 0 then
|
||||||
|
WriteBuffer(AValue[0], Len);
|
||||||
|
finally
|
||||||
|
Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TBlobField.SetAsString(const AValue: string);
|
procedure TBlobField.SetAsString(const AValue: string);
|
||||||
var
|
var
|
||||||
Len : Integer;
|
Len : Integer;
|
||||||
begin
|
begin
|
||||||
With GetBlobStream(bmwrite) do
|
with GetBlobStream(bmWrite) do
|
||||||
try
|
try
|
||||||
Len := Length(AValue);
|
Len := Length(AValue);
|
||||||
if Len > 0 then
|
if Len > 0 then
|
||||||
@ -2861,7 +2894,7 @@ procedure TBlobField.SetAsWideString(const AValue: WideString);
|
|||||||
var
|
var
|
||||||
Len : Integer;
|
Len : Integer;
|
||||||
begin
|
begin
|
||||||
With GetBlobStream(bmwrite) do
|
with GetBlobStream(bmWrite) do
|
||||||
try
|
try
|
||||||
Len := Length(AValue) * 2;
|
Len := Length(AValue) * 2;
|
||||||
if Len > 0 then
|
if Len > 0 then
|
||||||
@ -2923,8 +2956,8 @@ end;
|
|||||||
procedure TBlobField.LoadFromStream(Stream: TStream);
|
procedure TBlobField.LoadFromStream(Stream: TStream);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
With GetBlobStream(bmWrite) do
|
with GetBlobStream(bmWrite) do
|
||||||
Try
|
try
|
||||||
CopyFrom(Stream,0);
|
CopyFrom(Stream,0);
|
||||||
finally
|
finally
|
||||||
Free;
|
Free;
|
||||||
|
Loading…
Reference in New Issue
Block a user