[fpc-devel] please make TField.SetDataset virtual
Paul Ishenin
webpirat at mail.ru
Fri May 30 15:10:25 CEST 2008
Michael Van Canneyt wrote:
> No. It could be that Delphi 3 had an integer argument, but I'm not sure.
> The FPC TDataset was originally coded when Delphi was at version 3.
> =
I am sure all delphi versions since 3 have them as Integer.
> Adding the BCD methods should not hurt, feel free to send a patch.
> =
A minimal start is attached.
Best regards,
Paul Ishenin.
-------------- next part --------------
Index: packages/fcl-db/src/base/db.pas
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- packages/fcl-db/src/base/db.pas (revision 11131)
+++ packages/fcl-db/src/base/db.pas (working copy)
@@ -22,7 +22,7 @@
=
interface
=
-uses Classes,Sysutils,Variants;
+uses Classes,Sysutils,Variants,FmtBCD;
=
const
=
@@ -319,6 +319,7 @@
procedure Change; virtual;
procedure DataChanged;
procedure FreeBuffers; virtual;
+ function GetAsBCD: TBCD; virtual;
function GetAsBoolean: Boolean; virtual;
function GetAsCurrency: Currency; virtual;
function GetAsLargeInt: LargeInt; virtual;
@@ -344,6 +345,7 @@
procedure Notification(AComponent: TComponent; Operation: TOperation);=
override;
procedure PropertyChanged(LayoutAffected: Boolean);
procedure ReadState(Reader: TReader); override;
+ procedure SetAsBCD(const AValue: TBCD); virtual;
procedure SetAsBoolean(AValue: Boolean); virtual;
procedure SetAsCurrency(AValue: Currency); virtual;
procedure SetAsDateTime(AValue: TDateTime); virtual;
@@ -377,6 +379,7 @@
procedure SetData(Buffer: Pointer; NativeFormat : Boolean); overload;
procedure SetFieldType(AValue: TFieldType); virtual;
procedure Validate(Buffer: Pointer);
+ property AsBCD: TBCD read GetAsBCD write SetAsBCD;
property AsBoolean: Boolean read GetAsBoolean write SetAsBoolean;
property AsCurrency: Currency read GetAsCurrency write SetAsCurrency;
property AsDateTime: TDateTime read GetAsDateTime write SetAsDateTime;
@@ -1937,7 +1940,7 @@
=
implementation
=
-uses dbconst,typinfo, fmtbcd;
+uses dbconst,typinfo;
=
{ ---------------------------------------------------------------------
Auxiliary functions
Index: packages/fcl-db/src/base/fields.inc
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- packages/fcl-db/src/base/fields.inc (revision 11131)
+++ packages/fcl-db/src/base/fields.inc (working copy)
@@ -278,6 +278,7 @@
---------------------------------------------------------------------}
=
Const
+ SBCD =3D 'BCD';
SBoolean =3D 'Boolean';
SDateTime =3D 'TDateTime';
SFloat =3D 'Float';
@@ -608,6 +609,11 @@
Result:=3D-1;
end;
=
+function TField.GetAsBCD: TBCD;
+begin
+ raise AccessError(SBCD);
+end;
+
function TField.GetLookup: Boolean;
begin
Result :=3D FieldKind =3D fkLookup;
@@ -632,6 +638,11 @@
end;
end;
=
+procedure TField.SetAsBCD(const AValue: TBCD);
+begin
+ Raise AccessError(SBCD);
+end;
+
procedure TField.SetIndex(const AValue: Integer);
begin
if FFields <> nil then FFields.SetFieldIndex(Self, AValue)
More information about the fpc-devel
mailing list