fix delete record with blob fieldin TRxmemDataset

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@806 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2009-05-20 17:15:31 +00:00
parent 40dc9f3108
commit 6031b4b828

View File

@ -186,7 +186,7 @@ type
FMemoryData: TRxMemoryData; FMemoryData: TRxMemoryData;
FID: Integer; FID: Integer;
FData: Pointer; FData: Pointer;
FBlobs: Pointer; FBlobs: PMemBlobArray;
function GetIndex: Integer; function GetIndex: Integer;
procedure SetMemoryData(Value: TRxMemoryData; UpdateParent: Boolean); procedure SetMemoryData(Value: TRxMemoryData; UpdateParent: Boolean);
protected protected
@ -386,15 +386,10 @@ begin
if FMemoryData <> nil then if FMemoryData <> nil then
begin begin
FMemoryData.FRecords.Remove(Self); FMemoryData.FRecords.Remove(Self);
{ if FMemoryData.BlobFieldCount > 0 then
Finalize(PMemBlobArray(FBlobs)^[0], FMemoryData.BlobFieldCount);
ReallocMem(FBlobs, 0);}
if FMemoryData.BlobFieldCount > 0 then if FMemoryData.BlobFieldCount > 0 then
begin begin
FinalizeBlobFields(FBlobs, Value.BlobFieldCount); FinalizeBlobFields(FBlobs, FMemoryData.BlobFieldCount);
Freemem(FBlobs, Value.BlobFieldCount * SizeOf(TMemBlobData)); Freemem(FBlobs, FMemoryData.BlobFieldCount * SizeOf(TMemBlobData));
//Finalize(PMemBlobArray(FBlobs)^[0], FMemoryData.BlobFieldCount);
// ReallocMem(FBlobs, 0);
end; end;
FBlobs:=nil; FBlobs:=nil;
ReallocMem(FData, 0); ReallocMem(FData, 0);
@ -411,8 +406,6 @@ begin
FMemoryData := Value; FMemoryData := Value;
if Value.BlobFieldCount > 0 then if Value.BlobFieldCount > 0 then
begin begin
// ReallocMem(FBlobs, Value.BlobFieldCount * SizeOf(Pointer));
// Initialize(PMemBlobArray(FBlobs)^[0]);//, Value.BlobFieldCount);
GetMem(FBlobs, Value.BlobFieldCount * SizeOf(TMemBlobData)); GetMem(FBlobs, Value.BlobFieldCount * SizeOf(TMemBlobData));
FinalizeBlobFields(FBlobs, Value.BlobFieldCount); FinalizeBlobFields(FBlobs, Value.BlobFieldCount);
// FillChar(FBlobs^, Value.BlobFieldCount * SizeOf(Pointer), 0); // FillChar(FBlobs^, Value.BlobFieldCount * SizeOf(Pointer), 0);