|
@@ -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
|
|
|
|
- result:= inherited GetIsnull
|
|
|
|
|
|
+ if Not Modified then
|
|
|
|
+ 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
|
|
|
|
- Try
|
|
|
|
|
|
+ with GetBlobStream(bmWrite) do
|
|
|
|
+ try
|
|
CopyFrom(Stream,0);
|
|
CopyFrom(Stream,0);
|
|
finally
|
|
finally
|
|
Free;
|
|
Free;
|