mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-08-22 16:29:10 +02:00
rtl: do not use TDataModule and TFormatSettings in initialization
This commit is contained in:
parent
99e52af8b5
commit
4eb3cac52b
@ -1426,6 +1426,9 @@ type
|
|||||||
{ ---------------------------------------------------------------------
|
{ ---------------------------------------------------------------------
|
||||||
TDatamodule support
|
TDatamodule support
|
||||||
---------------------------------------------------------------------}
|
---------------------------------------------------------------------}
|
||||||
|
|
||||||
|
{ TDataModule }
|
||||||
|
|
||||||
TDataModule = class(TComponent)
|
TDataModule = class(TComponent)
|
||||||
private
|
private
|
||||||
FDPos: TPoint;
|
FDPos: TPoint;
|
||||||
@ -1455,6 +1458,7 @@ type
|
|||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
Constructor CreateNew(AOwner: TComponent);
|
Constructor CreateNew(AOwner: TComponent);
|
||||||
Constructor CreateNew(AOwner: TComponent; CreateMode: Integer); virtual;
|
Constructor CreateNew(AOwner: TComponent; CreateMode: Integer); virtual;
|
||||||
|
class constructor ClassCreate;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
Procedure AfterConstruction; override;
|
Procedure AfterConstruction; override;
|
||||||
Procedure BeforeDestruction; override;
|
Procedure BeforeDestruction; override;
|
||||||
@ -1607,17 +1611,53 @@ begin
|
|||||||
Result:=String(TJSFunction(@TJSString.fromCharCode).apply(nil,TJSValueDynArray(JSValue(a))));
|
Result:=String(TJSFunction(@TJSString.fromCharCode).apply(nil,TJSValueDynArray(JSValue(a))));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function CreateComponentfromRes(const res : string; Inst : THandle; var Component : TComponent) : Boolean;
|
||||||
|
|
||||||
type
|
var
|
||||||
TIntConst = class
|
ResStream : TResourceStream;
|
||||||
Private
|
|
||||||
IntegerType: PTypeInfo; // The integer type RTTI pointer
|
Src : TStream;
|
||||||
IdentToIntFn: TIdentToInt; // Identifier to Integer conversion
|
aInfo : TResourceInfo;
|
||||||
IntToIdentFn: TIntToIdent; // Integer to Identifier conversion
|
|
||||||
Public
|
begin
|
||||||
constructor Create(AIntegerType: PTypeInfo; AIdentToInt: TIdentToInt;
|
if Inst=0 then ;
|
||||||
AIntToIdent: TIntToIdent);
|
result:=GetResourceInfo(Res,aInfo);
|
||||||
|
if Result then
|
||||||
|
begin
|
||||||
|
ResStream:=TResourceStream.Create(aInfo);
|
||||||
|
try
|
||||||
|
if Not FormResourceIsText then
|
||||||
|
Src:=ResStream
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Src:=TMemoryStream.Create;
|
||||||
|
ObjectTextToBinary(ResStream,Src);
|
||||||
|
Src.Position:=0;
|
||||||
end;
|
end;
|
||||||
|
Component:=Src.ReadComponent(Component);
|
||||||
|
finally
|
||||||
|
if Src<>ResStream then
|
||||||
|
Src.Free;
|
||||||
|
ResStream.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function DefaultInitHandler(Instance: TComponent; RootAncestor: TClass): Boolean;
|
||||||
|
|
||||||
|
function doinit(_class : TClass) : boolean;
|
||||||
|
begin
|
||||||
|
result:=false;
|
||||||
|
if (_class.ClassType=TComponent) or (_class.ClassType=RootAncestor) then
|
||||||
|
exit;
|
||||||
|
result:=doinit(_class.ClassParent);
|
||||||
|
// Resources are written with their unit name
|
||||||
|
result:=CreateComponentfromRes(_class.UnitName,0,Instance) or result;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
result:=doinit(Instance.ClassType);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TResourceStream }
|
{ TResourceStream }
|
||||||
|
|
||||||
@ -1745,6 +1785,17 @@ begin
|
|||||||
WriteBuffer(B,Length(B));
|
WriteBuffer(B,Length(B));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
type
|
||||||
|
TIntConst = class
|
||||||
|
Private
|
||||||
|
IntegerType: PTypeInfo; // The integer type RTTI pointer
|
||||||
|
IdentToIntFn: TIdentToInt; // Identifier to Integer conversion
|
||||||
|
IntToIdentFn: TIntToIdent; // Integer to Identifier conversion
|
||||||
|
Public
|
||||||
|
constructor Create(AIntegerType: PTypeInfo; AIdentToInt: TIdentToInt;
|
||||||
|
AIntToIdent: TIntToIdent);
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TIntConst.Create(AIntegerType: PTypeInfo; AIdentToInt: TIdentToInt;
|
constructor TIntConst.Create(AIntegerType: PTypeInfo; AIdentToInt: TIdentToInt;
|
||||||
AIntToIdent: TIntToIdent);
|
AIntToIdent: TIntToIdent);
|
||||||
begin
|
begin
|
||||||
@ -11097,7 +11148,7 @@ end;
|
|||||||
TDatamodule
|
TDatamodule
|
||||||
----------------------------------------------------------------------}
|
----------------------------------------------------------------------}
|
||||||
|
|
||||||
Constructor TDataModule.Create(AOwner: TComponent);
|
constructor TDataModule.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
CreateNew(AOwner);
|
CreateNew(AOwner);
|
||||||
if (ClassType <> TDataModule) and
|
if (ClassType <> TDataModule) and
|
||||||
@ -11110,7 +11161,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Constructor TDataModule.CreateNew(AOwner: TComponent);
|
constructor TDataModule.CreateNew(AOwner: TComponent);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
CreateNew(AOwner,0);
|
CreateNew(AOwner,0);
|
||||||
@ -11124,13 +11175,18 @@ begin
|
|||||||
AddDataModule(Self);
|
AddDataModule(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.AfterConstruction;
|
class constructor TDataModule.ClassCreate;
|
||||||
|
begin
|
||||||
|
RegisterInitComponentHandler(TDataModule,@DefaultInitHandler);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataModule.AfterConstruction;
|
||||||
begin
|
begin
|
||||||
If not OldCreateOrder then
|
If not OldCreateOrder then
|
||||||
DoCreate;
|
DoCreate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.BeforeDestruction;
|
procedure TDataModule.BeforeDestruction;
|
||||||
begin
|
begin
|
||||||
Destroying;
|
Destroying;
|
||||||
RemoveFixupReferences(Self, '');
|
RemoveFixupReferences(Self, '');
|
||||||
@ -11147,7 +11203,7 @@ begin
|
|||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.DoCreate;
|
procedure TDataModule.DoCreate;
|
||||||
begin
|
begin
|
||||||
if Assigned(FOnCreate) then
|
if Assigned(FOnCreate) then
|
||||||
try
|
try
|
||||||
@ -11158,7 +11214,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.DoDestroy;
|
procedure TDataModule.DoDestroy;
|
||||||
begin
|
begin
|
||||||
if Assigned(FOnDestroy) then
|
if Assigned(FOnDestroy) then
|
||||||
try
|
try
|
||||||
@ -11214,112 +11270,63 @@ begin
|
|||||||
ApplicationHandleException(Self);
|
ApplicationHandleException(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.ReadP(Reader: TReader);
|
procedure TDataModule.ReadP(Reader: TReader);
|
||||||
begin
|
begin
|
||||||
FDPPI := Reader.ReadInteger;
|
FDPPI := Reader.ReadInteger;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.ReadState(Reader: TReader);
|
procedure TDataModule.ReadState(Reader: TReader);
|
||||||
begin
|
begin
|
||||||
FOldOrder := false;
|
FOldOrder := false;
|
||||||
inherited ReadState(Reader);
|
inherited ReadState(Reader);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.ReadT(Reader: TReader);
|
procedure TDataModule.ReadT(Reader: TReader);
|
||||||
begin
|
begin
|
||||||
FDPos.Y := Reader.ReadInteger;
|
FDPos.Y := Reader.ReadInteger;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.WriteT(Writer: TWriter);
|
procedure TDataModule.WriteT(Writer: TWriter);
|
||||||
begin
|
begin
|
||||||
Writer.WriteInteger(FDPos.Y);
|
Writer.WriteInteger(FDPos.Y);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.ReadL(Reader: TReader);
|
procedure TDataModule.ReadL(Reader: TReader);
|
||||||
begin
|
begin
|
||||||
FDPos.X := Reader.ReadInteger;
|
FDPos.X := Reader.ReadInteger;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.WriteL(Writer: TWriter);
|
procedure TDataModule.WriteL(Writer: TWriter);
|
||||||
begin
|
begin
|
||||||
Writer.WriteInteger(FDPos.X);
|
Writer.WriteInteger(FDPos.X);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.ReadW(Reader: TReader);
|
procedure TDataModule.ReadW(Reader: TReader);
|
||||||
begin
|
begin
|
||||||
FDSIze.X := Reader.ReadInteger;
|
FDSIze.X := Reader.ReadInteger;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.WriteP(Writer: TWriter);
|
procedure TDataModule.WriteP(Writer: TWriter);
|
||||||
begin
|
begin
|
||||||
Writer.WriteInteger(FDPPI);
|
Writer.WriteInteger(FDPPI);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.WriteW(Writer: TWriter);
|
procedure TDataModule.WriteW(Writer: TWriter);
|
||||||
begin
|
begin
|
||||||
Writer.WriteInteger(FDSIze.X);
|
Writer.WriteInteger(FDSIze.X);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.ReadH(Reader: TReader);
|
procedure TDataModule.ReadH(Reader: TReader);
|
||||||
begin
|
begin
|
||||||
FDSIze.Y := Reader.ReadInteger;
|
FDSIze.Y := Reader.ReadInteger;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TDataModule.WriteH(Writer: TWriter);
|
procedure TDataModule.WriteH(Writer: TWriter);
|
||||||
begin
|
begin
|
||||||
Writer.WriteInteger(FDSIze.Y);
|
Writer.WriteInteger(FDSIze.Y);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function CreateComponentfromRes(const res : string; Inst : THandle; var Component : TComponent) : Boolean;
|
|
||||||
|
|
||||||
var
|
|
||||||
ResStream : TResourceStream;
|
|
||||||
|
|
||||||
Src : TStream;
|
|
||||||
aInfo : TResourceInfo;
|
|
||||||
|
|
||||||
begin
|
|
||||||
if Inst=0 then ;
|
|
||||||
result:=GetResourceInfo(Res,aInfo);
|
|
||||||
if Result then
|
|
||||||
begin
|
|
||||||
ResStream:=TResourceStream.Create(aInfo);
|
|
||||||
try
|
|
||||||
if Not FormResourceIsText then
|
|
||||||
Src:=ResStream
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
Src:=TMemoryStream.Create;
|
|
||||||
ObjectTextToBinary(ResStream,Src);
|
|
||||||
Src.Position:=0;
|
|
||||||
end;
|
|
||||||
Component:=Src.ReadComponent(Component);
|
|
||||||
finally
|
|
||||||
if Src<>ResStream then
|
|
||||||
Src.Free;
|
|
||||||
ResStream.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function DefaultInitHandler(Instance: TComponent; RootAncestor: TClass): Boolean;
|
|
||||||
|
|
||||||
function doinit(_class : TClass) : boolean;
|
|
||||||
begin
|
|
||||||
result:=false;
|
|
||||||
if (_class.ClassType=TComponent) or (_class.ClassType=RootAncestor) then
|
|
||||||
exit;
|
|
||||||
result:=doinit(_class.ClassParent);
|
|
||||||
// Resources are written with their unit name
|
|
||||||
result:=CreateComponentfromRes(_class.UnitName,0,Instance) or result;
|
|
||||||
end;
|
|
||||||
|
|
||||||
begin
|
|
||||||
result:=doinit(Instance.ClassType);
|
|
||||||
end;
|
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
RegisterInitComponentHandler(TDataModule,@DefaultInitHandler);
|
|
||||||
ClassList:=TJSObject.New;
|
ClassList:=TJSObject.New;
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -58,13 +58,14 @@ type
|
|||||||
type
|
type
|
||||||
|
|
||||||
{ TFormatSettings }
|
{ TFormatSettings }
|
||||||
|
|
||||||
TFormatSettings = record
|
TFormatSettings = record
|
||||||
strict private
|
strict private
|
||||||
class function GetJSLocale: string; assembler; static;
|
class function GetJSLocale: string; assembler; static;
|
||||||
class function GetLocaleShortDayName(const ADayOfWeek: Integer; const ALocale: string): string; static;
|
class function GetLocaleShortDayName(const ADayOfWeek: Integer; const ALocale: string): string; static;
|
||||||
class function GetLocaleDecimalSeparator(const ALocale: string): string; static;
|
class function GetLocaleDecimalSeparator(const ALocale: string): string; assembler; static;
|
||||||
class function GetLocaleLongMonthName(const AMonth: Integer; const ALocale: string): string; static;
|
class function GetLocaleLongMonthName(const AMonth: Integer; const ALocale: string): string; assembler; static;
|
||||||
class function GetLocaleLongDayName(const ADayOfWeek: Integer; const ALocale: string): string; static;
|
class function GetLocaleLongDayName(const ADayOfWeek: Integer; const ALocale: string): string; assembler; static;
|
||||||
class function GetLocaleShortMonthName(const AMonth: Integer; const ALocale: string): string; static;
|
class function GetLocaleShortMonthName(const AMonth: Integer; const ALocale: string): string; static;
|
||||||
public
|
public
|
||||||
CurrencyDecimals: Byte;
|
CurrencyDecimals: Byte;
|
||||||
@ -94,6 +95,7 @@ type
|
|||||||
class function Create: TFormatSettings; overload; static;
|
class function Create: TFormatSettings; overload; static;
|
||||||
class function Create(const ALocale: string): TFormatSettings; overload; static;
|
class function Create(const ALocale: string): TFormatSettings; overload; static;
|
||||||
class function Invariant: TFormatSettings; static;
|
class function Invariant: TFormatSettings; static;
|
||||||
|
class constructor Init;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -4961,6 +4963,27 @@ begin
|
|||||||
Result:='0'+Result;
|
Result:='0'+Result;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure InitGlobalFormatSettings;
|
||||||
|
begin
|
||||||
|
// So the defaults are taken from FormatSettings.
|
||||||
|
{$WARN 5043 off}
|
||||||
|
FormatSettings:=TFormatSettings.Create;
|
||||||
|
TimeSeparator:=FormatSettings.TimeSeparator;
|
||||||
|
DateSeparator:=FormatSettings.DateSeparator;
|
||||||
|
ShortDateFormat:=FormatSettings.ShortDateFormat;
|
||||||
|
LongDateFormat:=FormatSettings.LongDateFormat;
|
||||||
|
ShortTimeFormat:=FormatSettings.ShortTimeFormat;
|
||||||
|
LongTimeFormat:=FormatSettings.LongTimeFormat;
|
||||||
|
DecimalSeparator:=FormatSettings.DecimalSeparator;
|
||||||
|
ThousandSeparator:=FormatSettings.ThousandSeparator;
|
||||||
|
TimeAMString:=FormatSettings.TimeAMString;
|
||||||
|
TimePMString:=FormatSettings.TimePMString;
|
||||||
|
CurrencyFormat:=FormatSettings.CurrencyFormat;
|
||||||
|
NegCurrFormat:=FormatSettings.NegCurrFormat;
|
||||||
|
CurrencyDecimals:=FormatSettings.CurrencyDecimals;
|
||||||
|
CurrencyString:=FormatSettings.CurrencyString;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TFormatSettings }
|
{ TFormatSettings }
|
||||||
|
|
||||||
class function TFormatSettings.Create: TFormatSettings;
|
class function TFormatSettings.Create: TFormatSettings;
|
||||||
@ -4968,7 +4991,7 @@ begin
|
|||||||
Result := Create(GetJSLocale);
|
Result := Create(GetJSLocale);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class function TFormatSettings.Create(const ALocale: String): TFormatSettings;
|
class function TFormatSettings.Create(const ALocale: string): TFormatSettings;
|
||||||
begin
|
begin
|
||||||
Result.LongDayNames:=DefaultLongDayNames;
|
Result.LongDayNames:=DefaultLongDayNames;
|
||||||
Result.ShortDayNames:=DefaultShortDayNames;
|
Result.ShortDayNames:=DefaultShortDayNames;
|
||||||
@ -5020,26 +5043,34 @@ begin
|
|||||||
Result.NegCurrFormat := 0;
|
Result.NegCurrFormat := 0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
class constructor TFormatSettings.Init;
|
||||||
|
begin
|
||||||
|
InitGlobalFormatSettings;
|
||||||
|
end;
|
||||||
|
|
||||||
class function TFormatSettings.GetJSLocale: string; assembler;
|
class function TFormatSettings.GetJSLocale: string; assembler;
|
||||||
asm
|
asm
|
||||||
return Intl.DateTimeFormat().resolvedOptions().locale
|
return Intl.DateTimeFormat().resolvedOptions().locale
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class function TFormatSettings.GetLocaleDecimalSeparator(const ALocale: string): string; assembler;
|
class function TFormatSettings.GetLocaleDecimalSeparator(const ALocale: string
|
||||||
|
): string; assembler;
|
||||||
asm
|
asm
|
||||||
var lNumber = 1.1;
|
var lNumber = 1.1;
|
||||||
lNumber = lNumber.toLocaleString(ALocale).substring(1, 2);
|
lNumber = lNumber.toLocaleString(ALocale).substring(1, 2);
|
||||||
return lNumber;
|
return lNumber;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class function TFormatSettings.GetLocaleLongDayName(const ADayOfWeek: Integer; const ALocale: string): string; assembler;
|
class function TFormatSettings.GetLocaleLongDayName(const ADayOfWeek: Integer;
|
||||||
|
const ALocale: string): string; assembler;
|
||||||
asm
|
asm
|
||||||
var lBaseDate = new Date(2017, 0, 1); // Sunday
|
var lBaseDate = new Date(2017, 0, 1); // Sunday
|
||||||
lBaseDate.setDate(lBaseDate.getDate() + ADayOfWeek - 1);
|
lBaseDate.setDate(lBaseDate.getDate() + ADayOfWeek - 1);
|
||||||
return lBaseDate.toLocaleDateString(ALocale, { weekday: 'long' });
|
return lBaseDate.toLocaleDateString(ALocale, { weekday: 'long' });
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class function TFormatSettings.GetLocaleLongMonthName(const AMonth: Integer; const ALocale: string): string; assembler;
|
class function TFormatSettings.GetLocaleLongMonthName(const AMonth: Integer;
|
||||||
|
const ALocale: string): string; assembler;
|
||||||
asm
|
asm
|
||||||
var lBaseDate = new Date(2017, AMonth - 1, 1);
|
var lBaseDate = new Date(2017, AMonth - 1, 1);
|
||||||
return lBaseDate.toLocaleDateString(ALocale, { month: 'long' });
|
return lBaseDate.toLocaleDateString(ALocale, { month: 'long' });
|
||||||
@ -8692,7 +8723,6 @@ begin
|
|||||||
Result:=Self;
|
Result:=Self;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function TStringBuilder.Replace(const OldValue, NewValue: String): TStringBuilder;
|
Function TStringBuilder.Replace(const OldValue, NewValue: String): TStringBuilder;
|
||||||
begin
|
begin
|
||||||
Result:=Replace(OldValue,NewValue,0,Length);
|
Result:=Replace(OldValue,NewValue,0,Length);
|
||||||
@ -8707,7 +8737,6 @@ begin
|
|||||||
// No-op
|
// No-op
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TStringBuilder.ToString: String;
|
function TStringBuilder.ToString: String;
|
||||||
begin
|
begin
|
||||||
Result:=ToString(0,Length);
|
Result:=ToString(0,Length);
|
||||||
@ -8734,30 +8763,11 @@ begin
|
|||||||
System.Insert(New,FData,Index+1);
|
System.Insert(New,FData,Index+1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
{$WARN 5043 off}
|
|
||||||
ShortMonthNames:=DefaultShortMonthNames;
|
ShortMonthNames:=DefaultShortMonthNames;
|
||||||
LongMonthNames:=DefaultLongMonthNames;
|
LongMonthNames:=DefaultLongMonthNames;
|
||||||
ShortDayNames:=DefaultShortDayNames;
|
ShortDayNames:=DefaultShortDayNames;
|
||||||
LongDayNames:=DefaultLongDayNames;
|
LongDayNames:=DefaultLongDayNames;
|
||||||
FormatSettings:=TFormatSettings.Create;
|
|
||||||
// So the defaults are taken from FormatSettings.
|
|
||||||
TimeSeparator:=FormatSettings.TimeSeparator;
|
|
||||||
DateSeparator:=FormatSettings.DateSeparator;
|
|
||||||
ShortDateFormat:=FormatSettings.ShortDateFormat;
|
|
||||||
LongDateFormat:=FormatSettings.LongDateFormat;
|
|
||||||
ShortTimeFormat:=FormatSettings.ShortTimeFormat;
|
|
||||||
LongTimeFormat:=FormatSettings.LongTimeFormat;
|
|
||||||
DecimalSeparator:=FormatSettings.DecimalSeparator;
|
|
||||||
ThousandSeparator:=FormatSettings.ThousandSeparator;
|
|
||||||
TimeAMString:=FormatSettings.TimeAMString;
|
|
||||||
TimePMString:=FormatSettings.TimePMString;
|
|
||||||
CurrencyFormat:=FormatSettings.CurrencyFormat;
|
|
||||||
NegCurrFormat:=FormatSettings.NegCurrFormat;
|
|
||||||
CurrencyDecimals:=FormatSettings.CurrencyDecimals;
|
|
||||||
CurrencyString:=FormatSettings.CurrencyString;
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user