Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions CORE/Source/Basic/uRESTDWDesignReg.pas
Original file line number Diff line number Diff line change
Expand Up @@ -791,9 +791,8 @@ procedure TRESTDWContextRulesEditor.ExecuteVerb(Index: Integer);
RegField(TStringFieldRESTDW);
// RegField(TRESTDWSQLTimeStampOffsetField);
{$ELSE}
RegisterFields([TRESTDWNumericField]);
RegisterFields([TStringFieldRESTDW]);
// RegisterFields(DefaultFieldClasses);
RegisterFields([TRESTDWNumericField]);
{$ENDIF}
{$IFDEF FPC}
{$I RESTDataWareComponents_LAMW.lrs}
Expand Down
4 changes: 2 additions & 2 deletions CORE/Source/Consts/uRESTDWConsts.pas
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@

// controle de versão
RESTDWVersionINFO = 'v2.1.0-';
RESTDWRelease = '3974';
RESTDWCodeProject = 'Final Fantasy X - SourceForge';
RESTDWRelease = '3992';
RESTDWCodeProject = 'Final Fantasy X - GitHub';
RESTDWVersao = RESTDWVersionINFO + RESTDWRelease + '(' + RESTDWCodeProject + ')';
RESTDWDialogoTitulo = 'REST DataWare Components ' + RESTDWVersao;
RESTDWSobreTitulo = 'REST DataWare '+ RESTDWVersao;
Expand Down
26 changes: 26 additions & 0 deletions CORE/Source/Includes/uRESTDW.inc
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,32 @@
{$ENDIF}

{$IFNDEF FPC}
{$IFDEF VER370 or CompilerVersion >= 37}
{$DEFINE DELPHI12UP}
{$DEFINE DELPHI11UP}
{$DEFINE DELPHI10_4UP}
{$DEFINE DELPHI10_3UP}
{$DEFINE DELPHI10_2UP}
{$DEFINE DELPHI10_1UP}
{$DEFINE DELPHI10_0UP}
{$DEFINE DELPHIXE8UP}
{$DEFINE DELPHIXE7UP}
{$DEFINE DELPHIXE6UP}
{$DEFINE DELPHIXE5UP}
{$DEFINE DELPHIXE4UP}
{$DEFINE DELPHIXE3UP}
{$DEFINE DELPHIXE2UP}
{$DEFINE DELPHIXEUP}
{$DEFINE DELPHI2010UP}
{$DEFINE DELPHI2009UP}
{$DEFINE DELPHI2007UP}
{$DEFINE DELPHI2006UP}
{$DEFINE DELPHI2005UP}
{$DEFINE DELPHI2025UP}
{$DEFINE DELPHI8UP}
{$DEFINE DELPHI7UP}
{$DEFINE RTL280_UP}
{$ENDIF ~VER370}
{$IFDEF VER360 or CompilerVersion >= 36}
{$DEFINE DELPHI12UP}
{$DEFINE DELPHI11UP}
Expand Down
3 changes: 3 additions & 0 deletions CORE/Source/Plugins/Memdataset/uRESTDWABMemDBFilterExpr.pas
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,9 @@ implementation
{$IFDEF DELPHI2010UP}
,ord(DB.ftSingle) // ftSingle
{$ENDIF}
{$IFDEF DELPHI2025UP}
,ord(DB.ftLargeint) // ftSingle
{$ENDIF}
{$ELSE}
,ord(DB.ftUnknown) // ftObject
{$ENDIF}
Expand Down
142 changes: 96 additions & 46 deletions CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas
Original file line number Diff line number Diff line change
Expand Up @@ -991,11 +991,11 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Protected
Function GetAsString : String; Override;
Procedure SetAsString (Const AValue : String); Override;
// Function GetAsVariant : Variant; Override;
Function GetAsFloat : Double; Override;
Public
Constructor Create(AOwner: TComponent); override;
Property Size : Integer Read vSize Write vSize;
Published
Property Size : Integer Read vSize Write vSize;
Property Precision : Integer Read vPrecision Write vPrecision;
End;
{$ENDIF}
Expand All @@ -1022,9 +1022,8 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Type
TStringFieldRESTDW = Class(TStringField)
Protected
Function CopyToNull(const aValue : String;
aBegin, aQtde : Integer) : String;
Function GetAsString : String; Override;
Function CopyToNull(aValue : String) : String;
Function GetAsString : String; Override;
{$IFNDEF FPC}
{$IFNDEF NEXTGEN}
Function GetValue(var aValue: AnsiString): Boolean;
Expand Down Expand Up @@ -1123,7 +1122,11 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
{$IFDEF DELPHIXE2UP},
TSQLTimeStampOffsetField, { ftTimeStampOffset }
nil, { ftObject }
TSingleField { ftSingle }{$ENDIF});
TSingleField { ftSingle }
{$ENDIF}
{$IFDEF DELPHI2025UP},
TLargeIntField
{$ENDIF});


Implementation
Expand Down Expand Up @@ -1579,8 +1582,8 @@ TMemBookmarkInfo = record
{$IFNDEF FPC}
SetLength(Data, Size);
{$ENDIF}
If GetData({$IFDEF FPC}Pointer(@{$ENDIF}Data{$IFDEF FPC}){$ENDIF}, True) then
Result := CopyToNull(BytesToString(TRESTDWBytes(Data)), InitStrPos, Size);
If GetData({$IFDEF FPC}Pointer(@{$ENDIF}Data{$IFDEF FPC}){$ENDIF}, True) then
Result := BytesToString(TRESTDWBytes(Data));
{$IFNDEF FPC}
SetLength(Data, 0);
{$ENDIF}
Expand All @@ -1604,28 +1607,22 @@ TMemBookmarkInfo = record
Begin
Result := False;
Try
aValue := CopyToNull(GetAsString, InitStrPos, Size);
aValue := GetAsString;
Result := True;
Except

End;
End;

Function TStringfieldRESTDW.CopyToNull(Const aValue : String;
aBegin, aQtde : Integer) : String;
Function TStringfieldRESTDW.CopyToNull(aValue : String) : String;
Var
I, A : Integer;
I : Integer;
Begin
Result := '';
A := Length(aValue) - FinalStrPos;
I := InitStrPos;
While I <= A Do
For I := InitStrPos To Length(aValue) - FinalStrPos Do
Begin
If aValue[I] <> #0 Then
Result := Result + aValue[I]
Else
Break;
Inc(I);
Result := Result + aValue[I];
End;
End;

Expand All @@ -1638,10 +1635,10 @@ TMemBookmarkInfo = record
{$IFNDEF FPC}
SetLength(Data, Size);
If GetData(Data, True) then
Result := CopyToNull(BytesToString(TRESTDWBytes(Data)), InitStrPos, Size);
Result := CopyToNull(BytesToString(TRESTDWBytes(Data)));
SetLength(Data, 0);
{$ELSE}
Result := Copy(GetAsAnsiString, InitStrPos, Size);
Result := GetAsAnsiString;
{$ENDIF}
End;

Expand Down Expand Up @@ -1709,12 +1706,15 @@ TMemBookmarkInfo = record
End;
{$ENDIF}

Function TRESTDWNumericField.GetAsString: string;
Var
x : DWLongDouble;
{$IFDEF COMPILER17_UP}
Data: TValueBuffer;
{$IFDEF FPC}
Function TRESTDWNumericField.GetAsFloat : Double;
Begin
If not GetData(@Result, True) then
Result := NaN;
End;
{$ENDIF}

Function TRESTDWNumericField.GetAsString: string;
Function BuildMask(Value : Double;
aPrecision : Integer) : String;
Var
Expand All @@ -1728,21 +1728,16 @@ TMemBookmarkInfo = record
vString := vString + '0';
Result := FormatFloat(vString, Value);
End;
Var
x : DWLongDouble;
Begin
{$IFNDEF COMPILER17_UP}
If Inherited GetData(@x, True) then
Begin
{$ELSE}
SetLength(Data, SizeOf(Extended));
If GetData(Data, True) then
{$IFDEF FPC}
x := GetAsFloat;
{$ELSE}
x := GetAsExtended;
{$ENDIF}
If Not isNull then
Begin
{$IF CompilerVersion > 28}
x := TBitConverter.InTo<Extended>(Data);
{$ELSE}
x := TBitConverter.ToExtended(Data);
{$IFEND}
// x := TBitConverter.InTo<Extended>(Data);
{$ENDIF}
If (Length(FloatToStr(x)) > vSize) Then
Result := FloatToStrF(x, ffGeneral, vSize, vPrecision)
Else If (Length(FloatToStr(Frac(x))) > vPrecision) Then
Expand Down Expand Up @@ -2726,6 +2721,19 @@ function TRESTDWMemTable.GetRecordSize: Word;
vDateTimeInt : DWInteger;
vDateTimeRec : TDateTimeRec;
vDWFieldType : Byte;
Function CountToNull(Const aBytes : TRESTDWBytes) : Integer;
Var
I : Integer;
Begin
Result := 0;
For I := 0 To Length(aBytes) -1 Do
Begin
If aBytes[I] <> 0 Then
Inc(Result)
Else
Break;
End;
End;
Begin
Result := False;
If Not GetActiveRecBuf(RecBuf) Then
Expand Down Expand Up @@ -2771,7 +2779,7 @@ function TRESTDWMemTable.GetRecordSize: Word;
Begin
If Length(TRESTDWBytes(Buffer)) > 0 Then
Begin
If (not (Char(TRESTDWBytes(Buffer)[0]) = #0)) Then
If (Not (Char(TRESTDWBytes(Buffer)[0]) = #0)) Then
Begin
Move(TRESTDWBytes(Buffer)[0], aDataBytes[0], cLen);
Result := (not (Char(TRESTDWBytes(Buffer)[0]) = #0));
Expand All @@ -2790,10 +2798,11 @@ function TRESTDWMemTable.GetRecordSize: Word;
Result := Not(Result);
If Not(Result) then
Begin
cLen := SizeOf(Boolean);
aNullData := False;
SetLength(aDataBytes, cLen);
Move(Data^, aDataBytes[0], cLen);
Move(aDataBytes[0], Pointer(@aNullData)^, SizeOf(Boolean));
// Move(aDataBytes[0], Pointer(@aNullData)^, SizeOf(Boolean));
Result := Not(aNullData);
End;
End
Expand Down Expand Up @@ -2937,7 +2946,8 @@ function TRESTDWMemTable.GetRecordSize: Word;
{$IFNDEF FPC}
{$IF CompilerVersion <= 22}
If Result Then
Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
If Not (Field.datatype in [ftBoolean]) then
Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
If (Field.datatype In [ftLargeint, ftInteger, ftSmallint, ftFloat,
ftFMTBCD, ftBCD, ftCurrency, ftDate, ftTime]) Then
Result := PRESTDWBytes(@Data)^[1] > 0;
Expand Down Expand Up @@ -2975,6 +2985,13 @@ function TRESTDWMemTable.GetRecordSize: Word;
End;
End;
End
Else If Field.datatype = ftExtended Then
Begin
If Length(TRESTDWBytes(Buffer)) = 0 Then
SetLength(TRESTDWBytes(Pointer(@Buffer)^), SizeOf(DwLongDouble));
Move(aDataBytes[1], vLongDouble, SizeOf(vLongDouble));
Move(vLongDouble, Pointer(Buffer)^, cLen-1);
End
Else
Begin
If Length(TRESTDWBytes(Buffer)) = 0 Then
Expand All @@ -2985,7 +3002,12 @@ function TRESTDWMemTable.GetRecordSize: Word;
Move(PRESTDWBytes(@Data)^[0], Pointer(Buffer)^, cLen);
End;
{$ELSE}
Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
If Not (Field.datatype in [ftBoolean{$IFNDEF FPC}
{$IF CompilerVersion > 21}
, ftByte, ftShortint
{$IFEND}
{$ENDIF}]) then
Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
If (Field.datatype In [ftAutoInc, ftLargeint, ftInteger, ftSmallint, ftFloat, ftSingle,
ftFMTBCD, ftBCD, ftCurrency]) Then
Begin
Expand Down Expand Up @@ -3026,14 +3048,28 @@ function TRESTDWMemTable.GetRecordSize: Word;
Else If Field.datatype = ftExtended Then
Begin
If Length(TRESTDWBytes(Buffer)) = 0 Then
SetLength(TRESTDWBytes(Pointer(@Buffer)^), SizeOf(DwLongDouble));
SetLength(TRESTDWBytes(Pointer(@Buffer)^), SizeOf(vLongDouble));
Move(aDataBytes[1], vLongDouble, SizeOf(vLongDouble));
Move(vLongDouble, Pointer(Buffer)^, cLen-1);
Move(Pointer(@vLongDouble)^, Pointer(Buffer)^, SizeOf(vLongDouble));
End
Else
Begin
// If Field.datatype in [ftString, ftFixedChar
// {$IF DEFINED(FPC) OR DEFINED(DELPHI10_0UP)}
// , ftFixedWideChar , ftWideString{$IFEND}] Then
// Begin
// cLen := CountToNull(aDataBytes);
// If Length(TRESTDWBytes(Buffer)) > cLen Then
// Begin
// SetLength(TRESTDWBytes(Buffer), 0);
// SetLength(TRESTDWBytes(Buffer), cLen);
// End;
// End
// Else
// Begin
If Length(TRESTDWBytes(Buffer)) = 0 Then
SetLength(TRESTDWBytes(Buffer), cLen);
// End;
If Field.datatype = ftGuid Then
Move(PRESTDWBytes(@Data)^[0], Pointer(Buffer)^, cLen -1)
Else
Expand All @@ -3043,6 +3079,8 @@ function TRESTDWMemTable.GetRecordSize: Word;
{$ELSE}
If Length(TRESTDWBytes(Buffer)) = 0 Then
SetLength(TRESTDWBytes(Buffer), cLen);
If Not (Field.datatype in [ftBoolean]) then
Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
If (Field.datatype In [ftAutoInc, ftLargeint, ftInteger, ftSmallint, ftFloat,
ftFMTBCD, ftBCD, ftCurrency]) Then
Expand Down Expand Up @@ -3087,6 +3125,15 @@ function TRESTDWMemTable.GetRecordSize: Word;
End;
End;
End
{
Else If Field.datatype = ftExtended Then
Begin
If Length(TRESTDWBytes(Buffer)) = 0 Then
SetLength(TRESTDWBytes(Pointer(@Buffer)^), SizeOf(DwLongDouble));
Move(aDataBytes[1], vLongDouble, SizeOf(vLongDouble));
Move(vLongDouble, Pointer(Buffer)^, cLen-1);
End
}
Else
Begin
If Length(TRESTDWBytes(Buffer)) = 0 Then
Expand Down Expand Up @@ -5966,7 +6013,10 @@ procedure TRESTDWMemTable.InternalOpen;
If FieldDefs[I].DataType = {$IFNDEF FPC}ftExtended{$ELSE}ftFMTBcd{$ENDIF} Then
Field := TRESTDWNumericField.Create(Self)
Else If FieldDefs[I].DataType = {$IFNDEF FPC}ftString{$ELSE}ftFixedChar{$ENDIF} Then
Field := TStringFieldRESTDW.Create(Self)
Begin
Field := TStringFieldRESTDW.Create(Self);
Field.Size := FieldDefs[I].Size;
End
Else
Begin
{$IFNDEF FPC}
Expand Down