mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 07:46:00 +02:00
parent
99b15e95a1
commit
370f7737b6
@ -497,26 +497,53 @@ begin
|
|||||||
Result := False;
|
Result := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TDataSet.DataConvert(aField: TField; aSource, aDest: Pointer;
|
||||||
|
aToNative: Boolean);
|
||||||
|
|
||||||
|
var
|
||||||
|
DT : TFieldType;
|
||||||
|
|
||||||
|
begin
|
||||||
|
DT := aField.DataType;
|
||||||
|
case DT of
|
||||||
|
ftDate, ftTime, ftDateTime: TDateTime(aDest^) := DateTimeRecToDateTime(DT, TDateTimeRec(aSource^));
|
||||||
|
ftTimeStamp : TTimeStamp(aDest^) := TTimeStamp(aSource^);
|
||||||
|
// ftBCD : ;
|
||||||
|
// ftFMTBCD : ;
|
||||||
|
// ftBytes : ;
|
||||||
|
// ftVarBytes : ;
|
||||||
|
// ftWideString : ;
|
||||||
|
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TDataSet.GetFieldData(Field: TField; Buffer: Pointer;
|
function TDataSet.GetFieldData(Field: TField; Buffer: Pointer;
|
||||||
NativeFormat: Boolean): Boolean;
|
NativeFormat: Boolean): Boolean;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
DT : TFieldType;
|
AStatBuffer : Array[0..dsMaxStringSize] of Char;
|
||||||
DTRBuffer : TDateTimeRec;
|
ADynBuffer : pchar;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
If NativeFormat then
|
If NativeFormat then
|
||||||
Result:=GetFieldData(Field, Buffer)
|
Result:=GetFieldData(Field, Buffer)
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
DT := Field.DataType;
|
if Field.DataSize <= dsMaxStringSize then
|
||||||
case DT of
|
begin
|
||||||
ftDate, ftTime, ftDateTime: begin
|
Result := GetfieldData(Field, @AStatBuffer);
|
||||||
Result := GetfieldData(Field, @DTRBuffer);
|
if Result then DataConvert(Field,@AStatBuffer,Buffer,False);
|
||||||
TDateTime(buffer^) := DateTimeRecToDateTime(DT, DTRBuffer);
|
end
|
||||||
end
|
|
||||||
else
|
else
|
||||||
Result:=GetFieldData(Field, Buffer)
|
begin
|
||||||
end;
|
GetMem(ADynBuffer,Field.DataSize);
|
||||||
|
try
|
||||||
|
Result := GetfieldData(Field, ADynBuffer);
|
||||||
|
if Result then DataConvert(Field,ADynBuffer,Buffer,False);
|
||||||
|
finally
|
||||||
|
FreeMem(ADynBuffer);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -1150,6 +1150,7 @@ type
|
|||||||
function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Longint; virtual;
|
function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Longint; virtual;
|
||||||
function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; virtual;
|
function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; virtual;
|
||||||
procedure CursorPosChanged;
|
procedure CursorPosChanged;
|
||||||
|
procedure DataConvert(aField: TField; aSource, aDest: Pointer; aToNative: Boolean); virtual;
|
||||||
procedure Delete;
|
procedure Delete;
|
||||||
procedure DisableControls;
|
procedure DisableControls;
|
||||||
procedure Edit;
|
procedure Edit;
|
||||||
|
Loading…
Reference in New Issue
Block a user