fcl-db: base: TShortintField + TByteField

git-svn-id: trunk@47221 -
This commit is contained in:
lacak 2020-10-27 13:34:43 +00:00
parent b5a1c93ec2
commit 54f85eec56
2 changed files with 61 additions and 12 deletions

View File

@ -604,6 +604,24 @@ type
end; end;
TIntegerField = Class(TLongintField); TIntegerField = Class(TLongintField);
{ TShortintField }
TShortintField = class(TLongintField)
protected
function GetDataSize: Integer; override;
public
constructor Create(AOwner: TComponent); override;
end;
{ TByteField }
TByteField = class(TLongintField)
protected
function GetDataSize: Integer; override;
public
constructor Create(AOwner: TComponent); override;
end;
{ TSmallintField } { TSmallintField }
TSmallintField = class(TLongintField) TSmallintField = class(TLongintField)
@ -2297,8 +2315,8 @@ const
{ ftOraTimeStamp} nil, { ftOraTimeStamp} nil,
{ ftOraInterval} nil, { ftOraInterval} nil,
{ ftLongWord} TLongWordField, { ftLongWord} TLongWordField,
{ ftShortint} {TShortintField}nil, { ftShortint} TShortintField,
{ ftByte} {TByteField}nil, { ftByte} TByteField,
{ ftExtended} nil { ftExtended} nil
); );

View File

@ -1587,7 +1587,7 @@ begin
SetDataType(ftInteger); SetDataType(ftInteger);
FMinRange:=Low(LongInt); FMinRange:=Low(LongInt);
FMaxRange:=High(LongInt); FMaxRange:=High(LongInt);
FValidchars:=['+','-','0'..'9']; FValidChars:=['+','-','0'..'9'];
end; end;
function TLongintField.GetAsFloat: Double; function TLongintField.GetAsFloat: Double;
@ -1662,17 +1662,17 @@ end;
function TLongintField.GetValue(var AValue: Longint): Boolean; function TLongintField.GetValue(var AValue: Longint): Boolean;
var L : Longint; var L : Longint;
P : PLongint;
begin begin
L:=0; L:=0;
P:=@L; Result:=GetData(@L);
Result:=GetData(P);
If Result then If Result then
Case DataType of Case DataType of
ftInteger,ftAutoInc : AValue:=PLongint(P)^; ftInteger,ftAutoInc : AValue:=PLongint(@L)^;
ftWord : AValue:=PWord(P)^; ftSmallint : AValue:=PSmallint(@L)^;
ftSmallint : AValue:=PSmallint(P)^; ftWord : AValue:=PWord(@L)^;
ftShortint : AValue:=PShortint(@L)^;
ftByte : AValue:=PByte(@L)^;
end; end;
end; end;
@ -1755,6 +1755,37 @@ begin
RangeError(AValue,FMinRange,FMaxRange); RangeError(AValue,FMinRange,FMaxRange);
end; end;
{ TShortintField }
function TShortintField.GetDataSize: Integer;
begin
Result:=SizeOf(Shortint);
end;
constructor TShortintField.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
SetDataType(ftShortInt);
FMinRange:=Low(ShortInt);
FMaxRange:=High(ShortInt);
end;
{ TByteField }
function TByteField.GetDataSize: Integer;
begin
Result:=SizeOf(Byte);
end;
constructor TByteField.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
SetDataType(ftByte);
FMinRange:=Low(Byte);
FMaxRange:=High(Byte);
FValidChars:=['+','0'..'9'];
end;
{ TSmallintField } { TSmallintField }
function TSmallintField.GetDataSize: Integer; function TSmallintField.GetDataSize: Integer;
@ -1788,7 +1819,7 @@ begin
SetDataType(ftWord); SetDataType(ftWord);
FMinRange:=0; FMinRange:=0;
FMaxRange:=65535; FMaxRange:=65535;
FValidchars:=['+','0'..'9']; FValidChars:=['+','0'..'9'];
end; end;
{ TAutoIncField } { TAutoIncField }
@ -1819,7 +1850,7 @@ constructor TLongWordField.Create(AOwner: TComponent);
begin begin
Inherited Create(AOwner); Inherited Create(AOwner);
SetDataType(ftLongWord); SetDataType(ftLongWord);
FValidchars:=['+','-','0'..'9']; FValidChars:=['+','0'..'9'];
end; end;
function TLongWordField.CheckRange(AValue: LargeInt): Boolean; function TLongWordField.CheckRange(AValue: LargeInt): Boolean;
@ -1955,7 +1986,7 @@ begin
SetDataType(ftLargeint); SetDataType(ftLargeint);
FMinRange:=Low(Largeint); FMinRange:=Low(Largeint);
FMaxRange:=High(Largeint); FMaxRange:=High(Largeint);
FValidchars:=['+','-','0'..'9']; FValidChars:=['+','-','0'..'9'];
end; end;
function TLargeintField.GetAsFloat: Double; function TLargeintField.GetAsFloat: Double;