mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 17:25:39 +02:00
196 lines
6.1 KiB
ObjectPascal
196 lines
6.1 KiB
ObjectPascal
unit h_sysut;
|
|
|
|
interface
|
|
Uses SysUtils,
|
|
Variants,
|
|
{$ifdef DELPHI7}
|
|
Variants,
|
|
{$endif}
|
|
Delphin;
|
|
implementation
|
|
//Tolik 24/01/2022 --
|
|
function StrToFloat_My(const S: string; const AFormatSettings: TFormatSettings): Extended;
|
|
var ss: string;
|
|
begin
|
|
ss := s;
|
|
|
|
if formatSettings.DecimalSeparator = ',' then
|
|
ss := StringReplace(ss, '.', formatSettings.DecimalSeparator, [rfReplaceAll])
|
|
else
|
|
if formatSettings.DecimalSeparator = '.' then
|
|
ss := StringReplace(ss, ',', formatSettings.DecimalSeparator, [rfReplaceAll]);
|
|
|
|
Result := StrToFloat(ss, AFormatSettings);
|
|
end;
|
|
//
|
|
{------------------------------}
|
|
function myFormat(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
var T:Array of tvarrec;
|
|
maxt:Integer;
|
|
begin
|
|
maxT := s[1];
|
|
SetLength(t,maxt);
|
|
VarToConsts(S[1],T,maxt);
|
|
Result:=Format(s[0],t);
|
|
DisposeConsts(T,maxt);
|
|
end;
|
|
{------------------------------}
|
|
function myupper(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
Result:=ansiuppercase(s[0]);
|
|
end;
|
|
{------------------------------}
|
|
function mylower(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
Result:=ansilowercase(s[0]);
|
|
end;
|
|
{------------------------------}
|
|
function myIntToHex(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
Result:=IntToHex(s[0],s[1]);
|
|
end;
|
|
{------------------------------}
|
|
function MyIntToStr(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
Result:=IntToStr(s[0]);
|
|
end;
|
|
{------------------------------}
|
|
function MyFloatToStr(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
Result:=FloatToStr(s[0]);
|
|
end;
|
|
{------------------------------}
|
|
function MyAnsiComparStr(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
Result := AnsiCompareStr(s[0],s[1]);
|
|
end;
|
|
{------------------------------}
|
|
function MyAnsiCompareText(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
Result := AnsiCompareText(s[0],s[1]);
|
|
end;
|
|
{------------------------------}
|
|
function MyTrim(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
Result := Trim(s[0]);
|
|
end;
|
|
{------------------------------}
|
|
function MyTrimLeft(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
Result := TrimLeft(s[0]);
|
|
end;
|
|
{------------------------------}
|
|
function MyTrimRight(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
Result := TrimRight(s[0]);
|
|
end;
|
|
{------------------------------}
|
|
function MyVal(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
var St: string; Code: integer; V: Double;
|
|
begin
|
|
St := s[0];
|
|
Val(St, v, Code);
|
|
if frac(V) = 0 then S[1] := Integer(Trunc(V))
|
|
else S[1] := V;
|
|
s[2] := Code;
|
|
end;
|
|
{------------------------------}
|
|
function MyDate(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
result := Date;
|
|
end;
|
|
{------------------------------}
|
|
function MyTime(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
result := Time;
|
|
end;
|
|
{------------------------------}
|
|
function MyNow(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
result := Now;
|
|
end;
|
|
{------------------------------}
|
|
function MyStrToDate(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
result := StrToDate(s[0]);
|
|
end;
|
|
{------------------------------}
|
|
function MyDateToStr(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
if VarType(S[0]) = varString then result := DateToStr(StrToDate(s[0]))
|
|
else result := DateToStr(s[0]);
|
|
end;
|
|
{------------------------------}
|
|
function MyDecodeDate(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
var Date: TDateTime; Year, Month, Day: Word;
|
|
begin
|
|
if VarType(S[0]) = varString then Date := StrToDate(s[0])
|
|
else Date := s[0];
|
|
Year := s[1];
|
|
Month := s[2];
|
|
Day := s[3];
|
|
DecodeDate(Date, Year, Month, Day);
|
|
s[1] := Year;
|
|
s[2] := Month;
|
|
s[3] := Day;
|
|
end;
|
|
{------------------------------}
|
|
function MyEncodeDate(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
//var D : TDateTime;
|
|
begin
|
|
Result :=EncodeDate(s[0],s[1],s[2]);
|
|
end;
|
|
{------------------------------}
|
|
function MyFormatDateTime(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
if VarType(S[1]) = varString then s[1] := StrToDate(s[1]);
|
|
Result := FormatDateTime(s[0],s[1]);
|
|
end;
|
|
{------------------------------}
|
|
function MyStrToInt(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
result := StrToInt(s[0]);
|
|
end;
|
|
{------------------------------}
|
|
function MyStrToFloat(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
result := StrToFloat_My(s[0], FormatSettings);
|
|
end;
|
|
{------------------------------}
|
|
function MyFormatFloat(slf:TObject;var APropName:String;var s:array of variant):variant;
|
|
begin
|
|
result := FormatFloat(s[0],S[1]);
|
|
end;
|
|
{------------------------------}
|
|
procedure InitSysUtils;
|
|
begin
|
|
AddFun('IntToHex' ,MyIntToHex,[0,0]);
|
|
AddFun('IntToStr' ,MyIntToStr,[0]);
|
|
AddFun('Format' ,myFormat,[0,3]);
|
|
AddFun('AnsiUpperCase' ,MyUpper,[0]);
|
|
AddFun('AnsiLowerCase' ,MyLower,[0]);
|
|
AddFun('FloatToStr' ,MyFloatToStr,[0]);
|
|
AddFun('AnsiCompareStr' ,MyAnsiComparStr,[0,0]);
|
|
AddFun('AnsiCompareText' ,MyAnsiCompareText,[0,0]);
|
|
AddFun('Trim' ,MyTrim,[0]);
|
|
AddFun('TrimLeft' ,MyTrimLeft,[0]);
|
|
AddFun('TrimRight' ,MyTrimRight,[0]);
|
|
AddProc('Val' ,MyVal, [0,1,1]);
|
|
AddFun('Date' ,MyDate, [2]);
|
|
AddFun('Time' ,MyTime, [2]);
|
|
AddFun('Now' ,MyNow, [2]);
|
|
AddFun('StrToDate' ,MyStrToDate, [0]);
|
|
AddFun('DateToStr' ,MyDateToStr, [0]);
|
|
AddProc('DecodeDate' ,MyDecodeDate, [0,1,1,1]);
|
|
AddFun('EncodeDate' ,MyEncodeDate, [0,0,0]);
|
|
AddFun('FormatDateTime' ,MyFormatDateTime, [0,0]);
|
|
AddFun('StrToInt' ,MyStrToInt, [0]);
|
|
AddFun('StrToFloat' ,MyStrToFloat, [0]);
|
|
AddFun('FormatFloat' ,MyFormatFloat,[0,0]);
|
|
|
|
end;
|
|
|
|
initialization InitSysUtils;
|
|
|
|
end.
|