{----------------------------------------------------------------------------- The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/MPL-1.1.html Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for the specific language governing rights and limitations under the License. The Original Code is: JvInterpreter_SysUtils.PAS, released on 2002-07-04. The Initial Developers of the Original Code are: Andrei Prygounkov Copyright (c) 1999, 2002 Andrei Prygounkov All Rights Reserved. Contributor(s): You may retrieve the latest version of this file at the Project JEDI's JVCL home page, located at http://jvcl.sourceforge.net Description : adapter unit - converts JvInterpreter calls to delphi calls Known Issues: -----------------------------------------------------------------------------} // $Id: JvInterpreter_SysUtils.pas 11207 2007-03-13 11:05:01Z ivan_ra $ unit JvInterpreter_SysUtils; {$I jvcl.inc} {$I crossplatform.inc} interface uses {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} SysUtils, JvInterpreter; procedure RegisterJvInterpreterAdapter(JvInterpreterAdapter: TJvInterpreterAdapter); function SearchRec2Var(const SearchRec: TSearchRec): Variant; function Var2SearchRec(const SearchRec: Variant): TSearchRec; {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( RCSfile: '$URL: https://jvcl.svn.sourceforge.net/svnroot/jvcl/tags/JVCL3_32/run/JvInterpreter_SysUtils.pas $'; Revision: '$Revision: 11207 $'; Date: '$Date: 2007-03-13 12:05:01 +0100 (mar., 13 mars 2007) $'; LogPath: 'JVCL\run' ); {$ENDIF UNITVERSIONING} implementation uses {$IFDEF HAS_UNIT_VARIANTS} Variants, {$ENDIF HAS_UNIT_VARIANTS} JvJCLUtils; { TSearchRec } function SearchRec2Var(const SearchRec: TSearchRec): Variant; var Rec: ^TSearchRec; begin New(Rec); Rec^ := SearchRec; Result := R2V('TSearchRec', Rec); end; function Var2SearchRec(const SearchRec: Variant): TSearchRec; begin Result := TSearchRec(V2R(SearchRec)^); end; { Exception } { constructor Create(Msg: string) } procedure Exception_Create(var Value: Variant; Args: TJvInterpreterArgs); begin Value := O2V(Exception.Create(Args.Values[0])); end; { constructor CreateFmt(Msg: string; Args: array) } procedure Exception_CreateFmt(var Value: Variant; Args: TJvInterpreterArgs); begin // Value := O2V(Exception.CreateFmt(Args.Values[0], Args.Values[1])); NotImplemented('Exception.CreateFmt'); end; { constructor CreateRes(Ident: Integer) } procedure Exception_CreateRes(var Value: Variant; Args: TJvInterpreterArgs); begin Value := O2V(Exception.CreateRes(Args.Values[0])); end; { constructor CreateResFmt(Ident: Integer; Args: array) } procedure Exception_CreateResFmt(var Value: Variant; Args: TJvInterpreterArgs); begin // Value := O2V(Exception.CreateResFmt(Args.Values[0], Args.Values[1])); NotImplemented('Exception.CreateResFmt'); end; { constructor CreateHelp(Msg: string; AHelpContext: Integer) } procedure Exception_CreateHelp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := O2V(Exception.CreateHelp(Args.Values[0], Args.Values[1])); end; { constructor CreateFmtHelp(Msg: string; Args: array; AHelpContext: Integer) } procedure Exception_CreateFmtHelp(var Value: Variant; Args: TJvInterpreterArgs); begin // Value := O2V(Exception.CreateFmtHelp(Args.Values[0], Args.Values[1], Args.Values[2])); NotImplemented('Exception.CreateFmtHelp'); end; { constructor CreateResHelp(Ident: Integer; AHelpContext: Integer) } procedure Exception_CreateResHelp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := O2V(Exception.CreateResHelp(Args.Values[0], Args.Values[1])); end; { constructor CreateResFmtHelp(Ident: Integer; Args: array; AHelpContext: Integer) } procedure Exception_CreateResFmtHelp(var Value: Variant; Args: TJvInterpreterArgs); begin // Value := O2V(Exception.CreateResFmtHelp(Args.Values[0], Args.Values[1], Args.Values[2])); NotImplemented('Exception.CreateResFmtHelp'); end; { property Read HelpContext: Integer } procedure Exception_Read_HelpContext(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Exception(Args.Obj).HelpContext; end; { property Write HelpContext(Value: Integer) } procedure Exception_Write_HelpContext(const Value: Variant; Args: TJvInterpreterArgs); begin Exception(Args.Obj).HelpContext := Value; end; { property Read Message: string } procedure Exception_Read_Message(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Exception(Args.Obj).Message; end; { property Write Message(Value: string) } procedure Exception_Write_Message(const Value: Variant; Args: TJvInterpreterArgs); begin Exception(Args.Obj).Message := Value; end; { EAbort } { EOutOfMemory } { EInOutError } { EIntError } { EDivByZero } { ERangeError } { EIntOverflow } { EMathError } { EInvalidOp } { EZeroDivide } { EOverflow } { EUnderflow } { EInvalidPointer } { EInvalidCast } { EConvertError } { EAccessViolation } { EPrivilege } { EStackOverflow } { EControlC } { EVariantError } { EPropReadOnly } { EPropWriteOnly } { EExternalException } { EAssertionFailed } { EAbstractError } { EIntfCastError } { EInvalidContainer } { EInvalidInsert } { EPackageError } { EWin32Error } { function AllocMem(Size: Cardinal): Pointer; } procedure JvInterpreter_AllocMem(var Value: Variant; Args: TJvInterpreterArgs); begin Value := P2V(AllocMem(Args.Values[0])); end; {$IFDEF COMPILER5} { function NewStr(const S: string): PString; } procedure JvInterpreter_NewStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := P2V(NewStr(Args.Values[0])); end; { procedure DisposeStr(P: PString); } procedure JvInterpreter_DisposeStr(var Value: Variant; Args: TJvInterpreterArgs); begin DisposeStr(V2P(Args.Values[0])); end; { procedure AssignStr(var P: PString; const S: string); } procedure JvInterpreter_AssignStr(var Value: Variant; Args: TJvInterpreterArgs); begin AssignStr(PString(TVarData(Args.Values[0]).vPointer), Args.Values[1]); end; { procedure AppendStr(var Dest: string; const S: string); } procedure JvInterpreter_AppendStr(var Value: Variant; Args: TJvInterpreterArgs); begin AppendStr(string(TVarData(Args.Values[0]).vString), Args.Values[1]); end; {$ENDIF COMPILER5} { function UpperCase(const S: string): string; } procedure JvInterpreter_UpperCase(var Value: Variant; Args: TJvInterpreterArgs); begin Value := UpperCase(Args.Values[0]); end; { function LowerCase(const S: string): string; } procedure JvInterpreter_LowerCase(var Value: Variant; Args: TJvInterpreterArgs); begin Value := LowerCase(Args.Values[0]); end; { function CompareStr(const S1, S2: string): Integer; } procedure JvInterpreter_CompareStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CompareStr(Args.Values[0], Args.Values[1]); end; { function CompareMem(P1, P2: Pointer; Length: Integer): Boolean; } procedure JvInterpreter_CompareMem(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CompareMem(V2P(Args.Values[0]), V2P(Args.Values[1]), Args.Values[2]); end; { function CompareText(const S1, S2: string): Integer; } procedure JvInterpreter_CompareText(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CompareText(Args.Values[0], Args.Values[1]); end; { function ExtractQuotedString(s: string; Quote: Char): string; } procedure JvInterpreter_ExtractQuotedString(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ExtractQuotedString(Args.Values[0], string(Args.Values[1])[1]); end; { function AnsiUpperCase(const S: string): string; } procedure JvInterpreter_AnsiUpperCase(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiUpperCase(Args.Values[0]); end; { function AnsiLowerCase(const S: string): string; } procedure JvInterpreter_AnsiLowerCase(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiLowerCase(Args.Values[0]); end; { function AnsiCompareStr(const S1, S2: string): Integer; } procedure JvInterpreter_AnsiCompareStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiCompareStr(Args.Values[0], Args.Values[1]); end; { function AnsiCompareText(const S1, S2: string): Integer; } procedure JvInterpreter_AnsiCompareText(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiCompareText(Args.Values[0], Args.Values[1]); end; { function AnsiStrComp(S1, S2: PChar): Integer; } procedure JvInterpreter_AnsiStrComp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiStrComp(PChar(string(Args.Values[0])), PChar(string(Args.Values[1]))); end; { function AnsiStrIComp(S1, S2: PChar): Integer; } procedure JvInterpreter_AnsiStrIComp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiStrIComp(PChar(string(Args.Values[0])), PChar(string(Args.Values[1]))); end; { function AnsiStrLComp(S1, S2: PChar; MaxLen: Cardinal): Integer; } procedure JvInterpreter_AnsiStrLComp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiStrLComp(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Args.Values[2]); end; { function AnsiStrLIComp(S1, S2: PChar; MaxLen: Cardinal): Integer; } procedure JvInterpreter_AnsiStrLIComp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiStrLIComp(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Args.Values[2]); end; { function AnsiStrLower(Str: PChar): PChar; } procedure JvInterpreter_AnsiStrLower(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(AnsiStrLower(PChar(string(Args.Values[0])))); end; { function AnsiStrUpper(Str: PChar): PChar; } procedure JvInterpreter_AnsiStrUpper(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(AnsiStrUpper(PChar(string(Args.Values[0])))); end; { function AnsiLastChar(const S: string): PChar; } procedure JvInterpreter_AnsiLastChar(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(AnsiLastChar(Args.Values[0])); end; { function AnsiStrLastChar(P: PChar): PChar; } procedure JvInterpreter_AnsiStrLastChar(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(AnsiStrLastChar(PChar(string(Args.Values[0])))); end; { function Trim(const S: string): string; } procedure JvInterpreter_Trim(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Trim(Args.Values[0]); end; { function TrimLeft(const S: string): string; } procedure JvInterpreter_TrimLeft(var Value: Variant; Args: TJvInterpreterArgs); begin Value := TrimLeft(Args.Values[0]); end; { function TrimRight(const S: string): string; } procedure JvInterpreter_TrimRight(var Value: Variant; Args: TJvInterpreterArgs); begin Value := TrimRight(Args.Values[0]); end; { function QuotedStr(const S: string): string; } procedure JvInterpreter_QuotedStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := QuotedStr(Args.Values[0]); end; { function AnsiQuotedStr(const S: string; Quote: Char): string; } procedure JvInterpreter_AnsiQuotedStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiQuotedStr(Args.Values[0], string(Args.Values[1])[1]); end; { function AnsiExtractQuotedStr(var Src: PChar; Quote: Char): string; } procedure JvInterpreter_AnsiExtractQuotedStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiExtractQuotedStr(PChar(TVarData(Args.Values[0]).vPointer), string(Args.Values[1])[1]); end; { function AdjustLineBreaks(const S: string): string; } procedure JvInterpreter_AdjustLineBreaks(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AdjustLineBreaks(Args.Values[0]); end; { function IsValidIdent(const Ident: string): Boolean; } procedure JvInterpreter_IsValidIdent(var Value: Variant; Args: TJvInterpreterArgs); begin Value := IsValidIdent(Args.Values[0]); end; { function IntToStr(Value: Integer): string; } procedure JvInterpreter_IntToStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := IntToStr(Args.Values[0]); end; { function IntToHex(Value: Integer; Digits: Integer): string; } procedure JvInterpreter_IntToHex(var Value: Variant; Args: TJvInterpreterArgs); begin Value := IntToHex(Args.Values[0], Args.Values[1]); end; { function StrToInt(const S: string): Integer; } procedure JvInterpreter_StrToInt(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrToInt(Args.Values[0]); end; { function StrToIntDef(const S: string; Default: Integer): Integer; } procedure JvInterpreter_StrToIntDef(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrToIntDef(Args.Values[0], Args.Values[1]); end; { function LoadStr(Ident: Integer): string; } procedure JvInterpreter_LoadStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := LoadStr(Args.Values[0]); end; (* { function FmtLoadStr(Ident: Integer; const Args: array of const): string; } procedure JvInterpreter_FmtLoadStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FmtLoadStr(Args.Values[0], Args.Values[1]); end; *) { function FileOpen(const FileName: string; Mode: Integer): Integer; } procedure JvInterpreter_FileOpen(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FileOpen(Args.Values[0], Args.Values[1]); end; { function FileCreate(const FileName: string): Integer; } procedure JvInterpreter_FileCreate(var Value: Variant; Args: TJvInterpreterArgs); begin {$IFDEF MSWINDOWS} Value := FileCreate(Args.Values[0]); {$ENDIF MSWINDOWS} {$IFDEF UNIX} Value := FileCreate(VarToStr(Args.Values[0])); {$ENDIF UNIX} end; { function FileRead(Handle: Integer; var Buffer; Count: Integer): Integer; } procedure JvInterpreter_FileRead(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FileRead(Args.Values[0], TVarData(Args.Values[1]).vInteger, Args.Values[2]); end; { function FileWrite(Handle: Integer; const Buffer; Count: Integer): Integer; } procedure JvInterpreter_FileWrite(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FileWrite(Args.Values[0], Args.Values[1], Args.Values[2]); end; { function FileSeek(Handle, Offset, Origin: Integer): Integer; } procedure JvInterpreter_FileSeek(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FileSeek(Args.Values[0], Args.Values[1], Args.Values[2]); end; { procedure FileClose(Handle: Integer); } procedure JvInterpreter_FileClose(var Value: Variant; Args: TJvInterpreterArgs); begin FileClose(Args.Values[0]); end; { function FileAge(const FileName: string): Integer; } procedure JvInterpreter_FileAge(var Value: Variant; Args: TJvInterpreterArgs); begin {$IFDEF COMPILER10_UP} {$WARN SYMBOL_DEPRECATED OFF} Value := FileAge(Args.Values[0]); {$WARN SYMBOL_DEPRECATED ON} {$ELSE} Value := FileAge(Args.Values[0]); {$ENDIF COMPILER10_UP} end; { function FileExists(const FileName: string): Boolean; } procedure JvInterpreter_FileExists(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FileExists(Args.Values[0]); end; { function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer; } procedure JvInterpreter_FindFirst(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FindFirst(Args.Values[0], Args.Values[1], TSearchRec(V2R(Args.Values[2])^)); end; { function FindNext(var F: TSearchRec): Integer; } procedure JvInterpreter_FindNext(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FindNext(TSearchRec(V2R(Args.Values[0])^)); end; { procedure FindClose(var F: TSearchRec); } procedure JvInterpreter_FindClose(var Value: Variant; Args: TJvInterpreterArgs); begin FindClose(TSearchRec(V2R(Args.Values[0])^)); end; { function FileGetDate(Handle: Integer): Integer; } procedure JvInterpreter_FileGetDate(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FileGetDate(Args.Values[0]); end; { function FileSetDate(Handle: Integer; Age: Integer): Integer; } procedure JvInterpreter_FileSetDate(var Value: Variant; Args: TJvInterpreterArgs); begin {$IFDEF MSWINDOWS} Value := FileSetDate(Args.Values[0], Args.Values[1]); {$ENDIF MSWINDOWS} {$IFDEF UNIX} Value := FileSetDate(VarToStr(Args.Values[0]), Args.Values[1]); {$ENDIF UNIX} end; {$IFDEF MSWINDOWS} { function FileGetAttr(const FileName: string): Integer; } procedure JvInterpreter_FileGetAttr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FileGetAttr(Args.Values[0]); end; { function FileSetAttr(const FileName: string; Attr: Integer): Integer; } procedure JvInterpreter_FileSetAttr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FileSetAttr(Args.Values[0], Args.Values[1]); end; {$ENDIF MSWINDOWS} { function DeleteFile(const FileName: string): Boolean; } procedure JvInterpreter_DeleteFile(var Value: Variant; Args: TJvInterpreterArgs); begin Value := DeleteFile(Args.Values[0]); end; { function RenameFile(const OldName, NewName: string): Boolean; } procedure JvInterpreter_RenameFile(var Value: Variant; Args: TJvInterpreterArgs); begin Value := RenameFile(Args.Values[0], Args.Values[1]); end; { function ChangeFileExt(const FileName, Extension: string): string; } procedure JvInterpreter_ChangeFileExt(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ChangeFileExt(Args.Values[0], Args.Values[1]); end; { function ExtractFilePath(const FileName: string): string; } procedure JvInterpreter_ExtractFilePath(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ExtractFilePath(Args.Values[0]); end; { function ExtractFileDir(const FileName: string): string; } procedure JvInterpreter_ExtractFileDir(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ExtractFileDir(Args.Values[0]); end; { function ExtractFileDrive(const FileName: string): string; } procedure JvInterpreter_ExtractFileDrive(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ExtractFileDrive(Args.Values[0]); end; { function ExtractFileName(const FileName: string): string; } procedure JvInterpreter_ExtractFileName(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ExtractFileName(Args.Values[0]); end; { function ExtractFileExt(const FileName: string): string; } procedure JvInterpreter_ExtractFileExt(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ExtractFileExt(Args.Values[0]); end; { function ExpandFileName(const FileName: string): string; } procedure JvInterpreter_ExpandFileName(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ExpandFileName(Args.Values[0]); end; { function ExpandUNCFileName(const FileName: string): string; } procedure JvInterpreter_ExpandUNCFileName(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ExpandUNCFileName(Args.Values[0]); end; { function ExtractRelativePath(const BaseName, DestName: string): string; } procedure JvInterpreter_ExtractRelativePath(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ExtractRelativePath(Args.Values[0], Args.Values[1]); end; { function FileSearch(const Name, DirList: string): string; } procedure JvInterpreter_FileSearch(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FileSearch(Args.Values[0], Args.Values[1]); end; {$IFDEF MSWINDOWS} { function DiskFree(Drive: Byte): Integer; } procedure JvInterpreter_DiskFree(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Integer(DiskFree(Args.Values[0])); end; { function DiskSize(Drive: Byte): Integer; } procedure JvInterpreter_DiskSize(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Integer(DiskSize(Args.Values[0])); end; {$ENDIF MSWINDOWS} { function FileDateToDateTime(FileDate: Integer): TDateTime; } procedure JvInterpreter_FileDateToDateTime(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FileDateToDateTime(Args.Values[0]); end; { function DateTimeToFileDate(DateTime: TDateTime): Integer; } procedure JvInterpreter_DateTimeToFileDate(var Value: Variant; Args: TJvInterpreterArgs); begin Value := DateTimeToFileDate(Args.Values[0]); end; { function GetCurrentDir: string; } procedure JvInterpreter_GetCurrentDir(var Value: Variant; Args: TJvInterpreterArgs); begin Value := GetCurrentDir; end; { function SetCurrentDir(const Dir: string): Boolean; } procedure JvInterpreter_SetCurrentDir(var Value: Variant; Args: TJvInterpreterArgs); begin Value := SetCurrentDir(Args.Values[0]); end; { function CreateDir(const Dir: string): Boolean; } procedure JvInterpreter_CreateDir(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CreateDir(Args.Values[0]); end; { function RemoveDir(const Dir: string): Boolean; } procedure JvInterpreter_RemoveDir(var Value: Variant; Args: TJvInterpreterArgs); begin Value := RemoveDir(Args.Values[0]); end; { function StrLen(Str: PChar): Cardinal; } procedure JvInterpreter_StrLen(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Integer(StrLen(PChar(string(Args.Values[0])))); end; { function StrEnd(Str: PChar): PChar; } procedure JvInterpreter_StrEnd(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrEnd(PChar(string(Args.Values[0])))); end; { function StrMove(Dest, Source: PChar; Count: Cardinal): PChar; } procedure JvInterpreter_StrMove(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrMove(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Args.Values[2])); end; { function StrCopy(Dest, Source: PChar): PChar; } procedure JvInterpreter_StrCopy(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrCopy(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])))); end; { function StrECopy(Dest, Source: PChar): PChar; } procedure JvInterpreter_StrECopy(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrECopy(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])))); end; { function StrLCopy(Dest, Source: PChar; MaxLen: Cardinal): PChar; } procedure JvInterpreter_StrLCopy(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrLCopy(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Args.Values[2])); end; { function StrPCopy(Dest: PChar; const Source: string): PChar; } procedure JvInterpreter_StrPCopy(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrPCopy(PChar(string(Args.Values[0])), Args.Values[1])); end; { function StrPLCopy(Dest: PChar; const Source: string; MaxLen: Cardinal): PChar; } procedure JvInterpreter_StrPLCopy(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrPLCopy(PChar(string(Args.Values[0])), Args.Values[1], Args.Values[2])); end; { function StrCat(Dest, Source: PChar): PChar; } procedure JvInterpreter_StrCat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrCat(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])))); end; { function StrLCat(Dest, Source: PChar; MaxLen: Cardinal): PChar; } procedure JvInterpreter_StrLCat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrLCat(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Args.Values[2])); end; { function StrComp(Str1, Str2: PChar): Integer; } procedure JvInterpreter_StrComp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrComp(PChar(string(Args.Values[0])), PChar(string(Args.Values[1]))); end; { function StrIComp(Str1, Str2: PChar): Integer; } procedure JvInterpreter_StrIComp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrIComp(PChar(string(Args.Values[0])), PChar(string(Args.Values[1]))); end; { function StrLComp(Str1, Str2: PChar; MaxLen: Cardinal): Integer; } procedure JvInterpreter_StrLComp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrLComp(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Args.Values[2]); end; { function StrLIComp(Str1, Str2: PChar; MaxLen: Cardinal): Integer; } procedure JvInterpreter_StrLIComp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrLIComp(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Args.Values[2]); end; { function StrScan(Str: PChar; Chr: Char): PChar; } procedure JvInterpreter_StrScan(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrScan(PChar(string(Args.Values[0])), string(Args.Values[1])[1])); end; { function StrRScan(Str: PChar; Chr: Char): PChar; } procedure JvInterpreter_StrRScan(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrRScan(PChar(string(Args.Values[0])), string(Args.Values[1])[1])); end; { function StrPos(Str1, Str2: PChar): PChar; } procedure JvInterpreter_StrPos(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrPos(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])))); end; { function StrUpper(Str: PChar): PChar; } procedure JvInterpreter_StrUpper(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrUpper(PChar(string(Args.Values[0])))); end; { function StrLower(Str: PChar): PChar; } procedure JvInterpreter_StrLower(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrLower(PChar(string(Args.Values[0])))); end; { function StrPas(Str: PChar): string; } procedure JvInterpreter_StrPas(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrPas(PChar(string(Args.Values[0]))); end; { function StrAlloc(Size: Cardinal): PChar; } procedure JvInterpreter_StrAlloc(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrAlloc(Args.Values[0])); end; { function StrBufSize(Str: PChar): Cardinal; } procedure JvInterpreter_StrBufSize(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Integer(StrBufSize(PChar(string(Args.Values[0])))); end; { function StrNew(Str: PChar): PChar; } procedure JvInterpreter_StrNew(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(StrNew(PChar(string(Args.Values[0])))); end; { procedure StrDispose(Str: PChar); } procedure JvInterpreter_StrDispose(var Value: Variant; Args: TJvInterpreterArgs); begin StrDispose(PChar(string(Args.Values[0]))); end; { function Format(const Format: string; const Args: array of const): string; } procedure JvInterpreter_Format(var Value: Variant; Args: TJvInterpreterArgs); function FormatWorkaround(const MyFormat: string; const Args: array of const): string; begin Result := Format(MyFormat, Args); end; begin Args.OpenArray(1); Value := FormatWorkaround(Args.Values[0], Slice(Args.OA^, Args.OAS)); end; { procedure FmtStr(var Result: string; const Format: string; const Args: array of const); } procedure JvInterpreter_FmtStr(var Value: Variant; Args: TJvInterpreterArgs); procedure FmtStrWorkaround(var Result: string; const Format: string; const Args: array of const); begin FmtStr(Result, Format, Args); end; begin Args.OpenArray(2); FmtStrWorkaround(string(TVarData(Args.Values[0]).vString), Args.Values[1], Slice(Args.OA^, Args.OAS)); end; { function StrFmt(Buffer, Format: PChar; const Args: array of const): PChar; } procedure JvInterpreter_StrFmt(var Value: Variant; Args: TJvInterpreterArgs); function StrFmtWorkaround(Buffer, Format: PChar; const Args: array of const): PChar; begin Result := StrFmt(Buffer, Format, Args); end; begin Args.OpenArray(2); Value := string(StrFmtWorkaround(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Slice(Args.OA^, Args.OAS))); end; { function StrLFmt(Buffer: PChar; MaxLen: Cardinal; Format: PChar; const Args: array of const): PChar; } procedure JvInterpreter_StrLFmt(var Value: Variant; Args: TJvInterpreterArgs); function StrLFmtWorkaround(Buffer: PChar; MaxLen: Cardinal; Format: PChar; const Args: array of const): PChar; begin Result := StrLFmt(Buffer, MaxLen, Format, Args); end; begin Args.OpenArray(3); Value := string(StrLFmtWorkaround(PChar(string(Args.Values[0])), Args.Values[1], PChar(string(Args.Values[2])), Slice(Args.OA^, Args.OAS))); end; { function FormatBuf(var Buffer; BufLen: Cardinal; const Format; FmtLen: Cardinal; const Args: array of const): Cardinal; } procedure JvInterpreter_FormatBuf(var Value: Variant; Args: TJvInterpreterArgs); function FormatBufWorkaround(var Buffer; BufLen: Cardinal; const Format; FmtLen: Cardinal; const Args: array of const): Cardinal; begin Result := FormatBuf(Buffer, BufLen, Format, FmtLen, Args); end; begin Args.OpenArray(4); Value := Integer(FormatBufWorkaround(Args.Values[0], Args.Values[1], Args.Values[2], Args.Values[3], Slice(Args.OA^, Args.OAS))); end; { function FloatToStr(Value: Extended): string; } procedure JvInterpreter_FloatToStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FloatToStr(Args.Values[0]); end; { function CurrToStr(Value: Currency): string; } procedure JvInterpreter_CurrToStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CurrToStr(Args.Values[0]); end; { function FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): string; } procedure JvInterpreter_FloatToStrF(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FloatToStrF(Args.Values[0], Args.Values[1], Args.Values[2], Args.Values[3]); end; { function CurrToStrF(Value: Currency; Format: TFloatFormat; Digits: Integer): string; } procedure JvInterpreter_CurrToStrF(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CurrToStrF(Args.Values[0], Args.Values[1], Args.Values[2]); end; (* { function FloatToText(Buffer: PChar; const Value; ValueType: TFloatValue; Format: TFloatFormat; Precision, Digits: Integer): Integer; } procedure JvInterpreter_FloatToText(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FloatToText(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Args.Values[2], Args.Values[3], Args.Values[4], Args.Values[5]); end; *) { function FormatFloat(const Format: string; Value: Extended): string; } procedure JvInterpreter_FormatFloat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FormatFloat(Args.Values[0], Args.Values[1]); end; { function FormatCurr(const Format: string; Value: Currency): string; } procedure JvInterpreter_FormatCurr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FormatCurr(Args.Values[0], Args.Values[1]); end; (* { function FloatToTextFmt(Buffer: PChar; const Value; ValueType: TFloatValue; Format: PChar): Integer; } procedure JvInterpreter_FloatToTextFmt(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FloatToTextFmt(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Args.Values[2], PChar(string(Args.Values[3]))); end; *) { function StrToFloat(const S: string): Extended; } procedure JvInterpreter_StrToFloat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrToFloat(Args.Values[0]); end; { function StrToCurr(const S: string): Currency; } procedure JvInterpreter_StrToCurr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrToCurr(Args.Values[0]); end; (* { function TextToFloat(Buffer: PChar; var Value; ValueType: TFloatValue): Boolean; } procedure JvInterpreter_TextToFloat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := TextToFloat(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])), Args.Values[2]); end; *) (* need record { procedure FloatToDecimal(var Result: TFloatRec; const Value; ValueType: TFloatValue; Precision, Decimals: Integer); } procedure JvInterpreter_FloatToDecimal(var Value: Variant; Args: TJvInterpreterArgs); begin FloatToDecimal(Args.Values[0], Args.Values[1], Args.Values[2], Args.Values[3], Args.Values[4]); end; *) (* need record { function DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp; } procedure JvInterpreter_DateTimeToTimeStamp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := DateTimeToTimeStamp(Args.Values[0]); end; { function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime; } procedure JvInterpreter_TimeStampToDateTime(var Value: Variant; Args: TJvInterpreterArgs); begin Value := TimeStampToDateTime(Args.Values[0]); end; { function MSecsToTimeStamp(MSecs: Comp): TTimeStamp; } procedure JvInterpreter_MSecsToTimeStamp(var Value: Variant; Args: TJvInterpreterArgs); begin Value := MSecsToTimeStamp(Args.Values[0]); end; { function TimeStampToMSecs(const TimeStamp: TTimeStamp): Comp; } procedure JvInterpreter_TimeStampToMSecs(var Value: Variant; Args: TJvInterpreterArgs); begin Value := TimeStampToMSecs(Args.Values[0]); end; *) { function EncodeDate(Year, Month, Day: Word): TDateTime; } procedure JvInterpreter_EncodeDate(var Value: Variant; Args: TJvInterpreterArgs); begin Value := EncodeDate(Args.Values[0], Args.Values[1], Args.Values[2]); end; { function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime; } procedure JvInterpreter_EncodeTime(var Value: Variant; Args: TJvInterpreterArgs); begin Value := EncodeTime(Args.Values[0], Args.Values[1], Args.Values[2], Args.Values[3]); end; { procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word); } procedure JvInterpreter_DecodeDate(var Value: Variant; Args: TJvInterpreterArgs); var Year, Month, Day: Word; begin DecodeDate(Args.Values[0], Year, Month, Day); Args.Values[1] := Year; Args.Values[2] := Month; Args.Values[3] := Day; end; { procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word); } procedure JvInterpreter_DecodeTime(var Value: Variant; Args: TJvInterpreterArgs); var Hour, Min, Sec, MSec: Word; begin DecodeTime(Args.Values[0], Hour, Min, Sec, MSec); Args.Values[1] := Hour; Args.Values[2] := Min; Args.Values[3] := Sec; Args.Values[4] := MSec; end; (* need record { procedure DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime); } procedure JvInterpreter_DateTimeToSystemTime(var Value: Variant; Args: TJvInterpreterArgs); begin DateTimeToSystemTime(Args.Values[0], Args.Values[1]); end; { function SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime; } procedure JvInterpreter_SystemTimeToDateTime(var Value: Variant; Args: TJvInterpreterArgs); begin Value := SystemTimeToDateTime(Args.Values[0]); end; *) { function DayOfWeek(Date: TDateTime): Integer; } procedure JvInterpreter_DayOfWeek(var Value: Variant; Args: TJvInterpreterArgs); begin Value := DayOfWeek(Args.Values[0]); end; { function Date: TDateTime; } procedure JvInterpreter_Date(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Date; end; { function Time: TDateTime; } procedure JvInterpreter_Time(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Time; end; { function Now: TDateTime; } procedure JvInterpreter_Now(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Now; end; { function IncMonth(const Date: TDateTime; NumberOfMonths: Integer): TDateTime; } procedure JvInterpreter_IncMonth(var Value: Variant; Args: TJvInterpreterArgs); begin Value := IncMonth(Args.Values[0], Args.Values[1]); end; { function IsLeapYear(Year: Word): Boolean; } procedure JvInterpreter_IsLeapYear(var Value: Variant; Args: TJvInterpreterArgs); begin Value := IsLeapYear(Args.Values[0]); end; { function DateToStr(Date: TDateTime): string; } procedure JvInterpreter_DateToStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := DateToStr(Args.Values[0]); end; { function TimeToStr(Time: TDateTime): string; } procedure JvInterpreter_TimeToStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := TimeToStr(Args.Values[0]); end; { function DateTimeToStr(DateTime: TDateTime): string; } procedure JvInterpreter_DateTimeToStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := DateTimeToStr(Args.Values[0]); end; { function StrToDate(const S: string): TDateTime; } procedure JvInterpreter_StrToDate(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrToDate(Args.Values[0]); end; { function StrToTime(const S: string): TDateTime; } procedure JvInterpreter_StrToTime(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrToTime(Args.Values[0]); end; { function StrToDateTime(const S: string): TDateTime; } procedure JvInterpreter_StrToDateTime(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrToDateTime(Args.Values[0]); end; { function FormatDateTime(const Format: string; DateTime: TDateTime): string; } procedure JvInterpreter_FormatDateTime(var Value: Variant; Args: TJvInterpreterArgs); begin Value := FormatDateTime(Args.Values[0], Args.Values[1]); end; { procedure DateTimeToString(var Result: string; const Format: string; DateTime: TDateTime); } procedure JvInterpreter_DateTimeToString(var Value: Variant; Args: TJvInterpreterArgs); begin DateTimeToString(string(TVarData(Args.Values[0]).vString), Args.Values[1], Args.Values[2]); end; { function SysErrorMessage(ErrorCode: Integer): string; } procedure JvInterpreter_SysErrorMessage(var Value: Variant; Args: TJvInterpreterArgs); begin Value := SysErrorMessage(Args.Values[0]); end; { function GetLocaleStr(Locale, LocaleType: Integer; const Default: string): string; } procedure JvInterpreter_GetLocaleStr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := GetLocaleStr(Args.Values[0], Args.Values[1], Args.Values[2]); end; { function GetLocaleChar(Locale, LocaleType: Integer; Default: Char): Char; } procedure JvInterpreter_GetLocaleChar(var Value: Variant; Args: TJvInterpreterArgs); begin Value := GetLocaleChar(Args.Values[0], Args.Values[1], string(Args.Values[2])[1]); end; { procedure GetFormatSettings; } procedure JvInterpreter_GetFormatSettings(var Value: Variant; Args: TJvInterpreterArgs); begin GetFormatSettings; end; { function ExceptObject: TObject; } procedure JvInterpreter_ExceptObject(var Value: Variant; Args: TJvInterpreterArgs); begin Value := O2V(ExceptObject); end; { function ExceptAddr: Pointer; } procedure JvInterpreter_ExceptAddr(var Value: Variant; Args: TJvInterpreterArgs); begin Value := P2V(ExceptAddr); end; { function ExceptionErrorMessage(ExceptObject: TObject; ExceptAddr: Pointer; Buffer: PChar; Size: Integer): Integer; } procedure JvInterpreter_ExceptionErrorMessage(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ExceptionErrorMessage(V2O(Args.Values[0]), V2P(Args.Values[1]), PChar(string(Args.Values[2])), Args.Values[3]); end; { procedure ShowException(ExceptObject: TObject; ExceptAddr: Pointer); } procedure JvInterpreter_ShowException(var Value: Variant; Args: TJvInterpreterArgs); begin ShowException(V2O(Args.Values[0]), V2P(Args.Values[1])); end; { procedure Abort; } procedure JvInterpreter_Abort(var Value: Variant; Args: TJvInterpreterArgs); begin Abort; end; { procedure OutOfMemoryError; } procedure JvInterpreter_OutOfMemoryError(var Value: Variant; Args: TJvInterpreterArgs); begin OutOfMemoryError; end; { procedure Beep; } procedure JvInterpreter_Beep(var Value: Variant; Args: TJvInterpreterArgs); begin Beep; end; { function ByteType(const S: string; Index: Integer): TMbcsByteType; } procedure JvInterpreter_ByteType(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ByteType(Args.Values[0], Args.Values[1]); end; { function StrByteType(Str: PChar; Index: Cardinal): TMbcsByteType; } procedure JvInterpreter_StrByteType(var Value: Variant; Args: TJvInterpreterArgs); begin Value := StrByteType(PChar(string(Args.Values[0])), Args.Values[1]); end; { function ByteToCharLen(const S: string; MaxLen: Integer): Integer; } procedure JvInterpreter_ByteToCharLen(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ByteToCharLen(Args.Values[0], Args.Values[1]); end; { function CharToByteLen(const S: string; MaxLen: Integer): Integer; } procedure JvInterpreter_CharToByteLen(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CharToByteLen(Args.Values[0], Args.Values[1]); end; { function ByteToCharIndex(const S: string; Index: Integer): Integer; } procedure JvInterpreter_ByteToCharIndex(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ByteToCharIndex(Args.Values[0], Args.Values[1]); end; { function CharToByteIndex(const S: string; Index: Integer): Integer; } procedure JvInterpreter_CharToByteIndex(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CharToByteIndex(Args.Values[0], Args.Values[1]); end; { function IsPathDelimiter(const S: string; Index: Integer): Boolean; } procedure JvInterpreter_IsPathDelimiter(var Value: Variant; Args: TJvInterpreterArgs); begin Value := IsPathDelimiter(Args.Values[0], Args.Values[1]); end; { function IsDelimiter(const Delimiters, S: string; Index: Integer): Boolean; } procedure JvInterpreter_IsDelimiter(var Value: Variant; Args: TJvInterpreterArgs); begin Value := IsDelimiter(Args.Values[0], Args.Values[1], Args.Values[2]); end; { function LastDelimiter(const Delimiters, S: string): Integer; } procedure JvInterpreter_LastDelimiter(var Value: Variant; Args: TJvInterpreterArgs); begin Value := LastDelimiter(Args.Values[0], Args.Values[1]); end; { function AnsiCompareFileName(const S1, S2: string): Integer; } procedure JvInterpreter_AnsiCompareFileName(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiCompareFileName(Args.Values[0], Args.Values[1]); end; { function AnsiLowerCaseFileName(const S: string): string; } procedure JvInterpreter_AnsiLowerCaseFileName(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiLowerCaseFileName(Args.Values[0]); end; { function AnsiUpperCaseFileName(const S: string): string; } procedure JvInterpreter_AnsiUpperCaseFileName(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiUpperCaseFileName(Args.Values[0]); end; { function AnsiPos(const Substr, S: string): Integer; } procedure JvInterpreter_AnsiPos(var Value: Variant; Args: TJvInterpreterArgs); begin Value := AnsiPos(Args.Values[0], Args.Values[1]); end; { function AnsiStrPos(Str, SubStr: PChar): PChar; } procedure JvInterpreter_AnsiStrPos(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(AnsiStrPos(PChar(string(Args.Values[0])), PChar(string(Args.Values[1])))); end; { function AnsiStrRScan(Str: PChar; Chr: Char): PChar; } procedure JvInterpreter_AnsiStrRScan(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(AnsiStrRScan(PChar(string(Args.Values[0])), string(Args.Values[1])[1])); end; { function AnsiStrScan(Str: PChar; Chr: Char): PChar; } procedure JvInterpreter_AnsiStrScan(var Value: Variant; Args: TJvInterpreterArgs); begin Value := string(AnsiStrScan(PChar(string(Args.Values[0])), string(Args.Values[1])[1])); end; { function LoadPackage(const Name: string): HMODULE; } procedure JvInterpreter_LoadPackage(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Integer(LoadPackage(Args.Values[0])); end; { procedure UnloadPackage(Module: HMODULE); } procedure JvInterpreter_UnloadPackage(var Value: Variant; Args: TJvInterpreterArgs); begin UnloadPackage(Args.Values[0]); end; {$IFDEF MSWINDOWS} { procedure RaiseLastWin32Error; } procedure JvInterpreter_RaiseLastWin32Error(var Value: Variant; Args: TJvInterpreterArgs); begin {$IFDEF COMPILER6_UP} RaiseLastOSError; {$ELSE} RaiseLastWin32Error; {$ENDIF COMPILER6_UP} end; { function Win32Check(RetVal: BOOL): BOOL; } procedure JvInterpreter_Win32Check(var Value: Variant; Args: TJvInterpreterArgs); begin Value := Win32Check(Args.Values[0]); end; {$ENDIF MSWINDOWS} { regional options } (* { read CurrencyString: string } procedure JvInterpreter_Read_CurrencyString(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CurrencyString; end; { write CurrencyString: string } procedure JvInterpreter_Write_CurrencyString(var Value: Variant; Args: TJvInterpreterArgs); begin CurrencyString := Value; end; { read CurrencyFormat: Byte } procedure JvInterpreter_Read_CurrencyFormat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CurrencyFormat; end; { write CurrencyFormat: Byte } procedure JvInterpreter_Write_CurrencyFormat(var Value: Variant; Args: TJvInterpreterArgs); begin CurrencyFormat := Value; end; { read NegCurrFormat: Byte } procedure JvInterpreter_Read_NegCurrFormat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := NegCurrFormat; end; { write NegCurrFormat: Byte } procedure JvInterpreter_Write_NegCurrFormat(var Value: Variant; Args: TJvInterpreterArgs); begin NegCurrFormat := Value; end; { read ThousandSeparator } procedure JvInterpreter_Read_ThousandSeparator(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ThousandSeparator; end; { write ThousandSeparator } procedure JvInterpreter_Write_ThousandSeparator(var Value: Variant; Args: TJvInterpreterArgs); begin ThousandSeparator := string(Value)[1]; end; { read DecimalSeparator } procedure JvInterpreter_Read_DecimalSeparator(var Value: Variant; Args: TJvInterpreterArgs); begin Value := DecimalSeparator; end; { write DecimalSeparator } procedure JvInterpreter_Write_DecimalSeparator(var Value: Variant; Args: TJvInterpreterArgs); begin DecimalSeparator := string(Value)[1]; end; { read CurrencyDecimals } procedure JvInterpreter_Read_CurrencyDecimals(var Value: Variant; Args: TJvInterpreterArgs); begin Value := CurrencyDecimals; end; { write CurrencyDecimals } procedure JvInterpreter_Write_CurrencyDecimals(var Value: Variant; Args: TJvInterpreterArgs); begin CurrencyDecimals := Value; end; { read DateSeparator } procedure JvInterpreter_Read_DateSeparator(var Value: Variant; Args: TJvInterpreterArgs); begin Value := DateSeparator; end; { write DateSeparator } procedure JvInterpreter_Write_DateSeparator(var Value: Variant; Args: TJvInterpreterArgs); begin DateSeparator := string(Value)[1]; end; { read ShortDateFormat } procedure JvInterpreter_Read_ShortDateFormat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ShortDateFormat; end; { write ShortDateFormat } procedure JvInterpreter_Write_ShortDateFormat(var Value: Variant; Args: TJvInterpreterArgs); begin ShortDateFormat := Value; end; { read LongDateFormat } procedure JvInterpreter_Read_LongDateFormat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := LongDateFormat; end; { write LongDateFormat } procedure JvInterpreter_Write_LongDateFormat(var Value: Variant; Args: TJvInterpreterArgs); begin LongDateFormat := Value; end; { read TimeSeparator } procedure JvInterpreter_Read_TimeSeparator(var Value: Variant; Args: TJvInterpreterArgs); begin Value := TimeSeparator; end; { write TimeSeparator } procedure JvInterpreter_Write_TimeSeparator(var Value: Variant; Args: TJvInterpreterArgs); begin TimeSeparator := string(Value)[1]; end; { read TimeAMString } procedure JvInterpreter_Read_TimeAMString(var Value: Variant; Args: TJvInterpreterArgs); begin Value := TimeAMString; end; { write TimeAMString } procedure JvInterpreter_Write_TimeAMString(var Value: Variant; Args: TJvInterpreterArgs); begin TimeAMString := Value; end; { read TimePMString } procedure JvInterpreter_Read_TimePMString(var Value: Variant; Args: TJvInterpreterArgs); begin Value := TimePMString; end; { write TimePMString } procedure JvInterpreter_Write_TimePMString(var Value: Variant; Args: TJvInterpreterArgs); begin TimePMString := Value; end; { read ShortTimeFormat } procedure JvInterpreter_Read_ShortTimeFormat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ShortTimeFormat; end; { write ShortTimeFormat } procedure JvInterpreter_Write_ShortTimeFormat(var Value: Variant; Args: TJvInterpreterArgs); begin ShortTimeFormat := Value; end; { read LongTimeFormat } procedure JvInterpreter_Read_LongTimeFormat(var Value: Variant; Args: TJvInterpreterArgs); begin Value := LongTimeFormat; end; { write LongTimeFormat } procedure JvInterpreter_Write_LongTimeFormat(var Value: Variant; Args: TJvInterpreterArgs); begin LongTimeFormat := Value; end; { read TwoDigitYearCenturyWindow } procedure JvInterpreter_Read_TwoDigitYearCenturyWindow(var Value: Variant; Args: TJvInterpreterArgs); begin Value := TwoDigitYearCenturyWindow; end; { write TwoDigitYearCenturyWindow } procedure JvInterpreter_Write_TwoDigitYearCenturyWindow(var Value: Variant; Args: TJvInterpreterArgs); begin TwoDigitYearCenturyWindow := Value; end; { read ListSeparator } procedure JvInterpreter_Read_ListSeparator(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ListSeparator; end; { write ListSeparator } procedure JvInterpreter_Write_ListSeparator(var Value: Variant; Args: TJvInterpreterArgs); begin ListSeparator := string(Args.Values[0])[1]; end; { read ShortMonthNames } procedure JvInterpreter_Read_ShortMonthNames(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ShortMonthNames[Integer(Args.Values[0])]; end; { write ShortMonthNames } procedure JvInterpreter_Write_ShortMonthNames(var Value: Variant; Args: TJvInterpreterArgs); begin ShortMonthNames[Integer(Args.Values[0])] := Value; end; { read LongMonthNames } procedure JvInterpreter_Read_LongMonthNames(var Value: Variant; Args: TJvInterpreterArgs); begin Value := LongMonthNames[Integer(Args.Values[0])]; end; { write LongMonthNames } procedure JvInterpreter_Write_LongMonthNames(var Value: Variant; Args: TJvInterpreterArgs); begin LongMonthNames[Integer(Args.Values[0])] := Value; end; { read ShortDayNames } procedure JvInterpreter_Read_ShortDayNames(var Value: Variant; Args: TJvInterpreterArgs); begin Value := ShortDayNames[Integer(Args.Values[0])]; end; { write ShortDayNames } procedure JvInterpreter_Write_ShortDayNames(var Value: Variant; Args: TJvInterpreterArgs); begin ShortDayNames[Integer(Args.Values[0])] := Value; end; { read LongDayNames } procedure JvInterpreter_Read_LongDayNames(var Value: Variant; Args: TJvInterpreterArgs); begin Value := LongDayNames[Integer(Args.Values[0])]; end; { write LongDayNames } procedure JvInterpreter_Write_LongDayNames(var Value: Variant; Args: TJvInterpreterArgs); begin LongDayNames[Integer(Args.Values[0])] := Value; end; { read EraNames } procedure JvInterpreter_Read_EraNames(var Value: Variant; Args: TJvInterpreterArgs); begin Value := EraNames[Integer(Args.Values[0])]; end; { write EraNames } procedure JvInterpreter_Write_EraNames(var Value: Variant; Args: TJvInterpreterArgs); begin EraNames[Integer(Args.Values[0])] := Value; end; { read EraYearOffsets } procedure JvInterpreter_Read_EraYearOffsets(var Value: Variant; Args: TJvInterpreterArgs); begin Value := EraYearOffsets[Integer(Args.Values[0])]; end; { write EraYearOffsets } procedure JvInterpreter_Write_EraYearOffsets(var Value: Variant; Args: TJvInterpreterArgs); begin EraYearOffsets[Integer(Args.Values[0])] := Value; end; *) type PSearchRec = ^TSearchRec; procedure JvInterpreter_NewTSearchRec(var Value: Pointer); begin New(PSearchRec(Value)); end; procedure JvInterpreter_DisposeTSearchRec(const Value: Pointer); begin Dispose(PSearchRec(Value)); end; procedure RegisterJvInterpreterAdapter(JvInterpreterAdapter: TJvInterpreterAdapter); const cSysUtils = 'SysUtils'; begin with JvInterpreterAdapter do begin { Exception } AddClass(cSysUtils, Exception, 'Exception'); AddGet(Exception, 'Create', Exception_Create, 1, [varEmpty], varEmpty); AddGet(Exception, 'CreateFmt', Exception_CreateFmt, 2, [varEmpty, varEmpty], varEmpty); AddGet(Exception, 'CreateRes', Exception_CreateRes, 1, [varEmpty], varEmpty); AddGet(Exception, 'CreateResFmt', Exception_CreateResFmt, 2, [varEmpty, varEmpty], varEmpty); AddGet(Exception, 'CreateHelp', Exception_CreateHelp, 2, [varEmpty, varEmpty], varEmpty); AddGet(Exception, 'CreateFmtHelp', Exception_CreateFmtHelp, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddGet(Exception, 'CreateResHelp', Exception_CreateResHelp, 2, [varEmpty, varEmpty], varEmpty); AddGet(Exception, 'CreateResFmtHelp', Exception_CreateResFmtHelp, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddGet(Exception, 'HelpContext', Exception_Read_HelpContext, 0, [varEmpty], varEmpty); AddSet(Exception, 'HelpContext', Exception_Write_HelpContext, 0, [varEmpty]); AddGet(Exception, 'Message', Exception_Read_Message, 0, [varEmpty], varEmpty); AddSet(Exception, 'Message', Exception_Write_Message, 0, [varEmpty]); { EAbort } AddClass(cSysUtils, EAbort, 'EAbort'); { EOutOfMemory } AddClass(cSysUtils, EOutOfMemory, 'EOutOfMemory'); { EInOutError } AddClass(cSysUtils, EInOutError, 'EInOutError'); { EIntError } AddClass(cSysUtils, EIntError, 'EIntError'); { EDivByZero } AddClass(cSysUtils, EDivByZero, 'EDivByZero'); { ERangeError } AddClass(cSysUtils, ERangeError, 'ERangeError'); { EIntOverflow } AddClass(cSysUtils, EIntOverflow, 'EIntOverflow'); { EMathError } AddClass(cSysUtils, EMathError, 'EMathError'); { EInvalidOp } AddClass(cSysUtils, EInvalidOp, 'EInvalidOp'); { EZeroDivide } AddClass(cSysUtils, EZeroDivide, 'EZeroDivide'); { EOverflow } AddClass(cSysUtils, EOverflow, 'EOverflow'); { EUnderflow } AddClass(cSysUtils, EUnderflow, 'EUnderflow'); { EInvalidPointer } AddClass(cSysUtils, EInvalidPointer, 'EInvalidPointer'); { EInvalidCast } AddClass(cSysUtils, EInvalidCast, 'EInvalidCast'); { EConvertError } AddClass(cSysUtils, EConvertError, 'EConvertError'); { EAccessViolation } AddClass(cSysUtils, EAccessViolation, 'EAccessViolation'); { EPrivilege } AddClass(cSysUtils, EPrivilege, 'EPrivilege'); {$IFDEF COMPILER5} { EStackOverflow } AddClass(cSysUtils, EStackOverflow, 'EStackOverflow'); {$ENDIF COMPILER5} { EControlC } AddClass(cSysUtils, EControlC, 'EControlC'); { EVariantError } AddClass(cSysUtils, EVariantError, 'EVariantError'); { EPropReadOnly } AddClass(cSysUtils, EPropReadOnly, 'EPropReadOnly'); { EPropWriteOnly } AddClass(cSysUtils, EPropWriteOnly, 'EPropWriteOnly'); { EExternalException } AddClass(cSysUtils, EExternalException, 'EExternalException'); { EAssertionFailed } AddClass(cSysUtils, EAssertionFailed, 'EAssertionFailed'); {$IFNDEF PC_MAPPED_EXCEPTIONS} // Linux define symbol { EAbstractError } AddClass(cSysUtils, EAbstractError, 'EAbstractError'); {$ENDIF !PC_MAPPED_EXCEPTIONS} { EIntfCastError } AddClass(cSysUtils, EIntfCastError, 'EIntfCastError'); { EInvalidContainer } AddClass(cSysUtils, EInvalidContainer, 'EInvalidContainer'); { EInvalidInsert } AddClass(cSysUtils, EInvalidInsert, 'EInvalidInsert'); { EPackageError } AddClass(cSysUtils, EPackageError, 'EPackageError'); // (rom) changed to EOSError for Delphi 6 {$IFDEF COMPILER6_UP} { EOSError } AddClass(cSysUtils, EOSError, 'EOSError'); {$ELSE} {$IFDEF MSWINDOWS} { EWin32Error } AddClass(cSysUtils, EWin32Error, 'EWin32Error'); {$ENDIF MSWINDOWS} {$ENDIF COMPILER6_UP} AddFunction(cSysUtils, 'AllocMem', JvInterpreter_AllocMem, 1, [varEmpty], varEmpty); {$IFDEF COMPILER5} AddFunction(cSysUtils, 'NewStr', JvInterpreter_NewStr, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'DisposeStr', JvInterpreter_DisposeStr, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'AssignStr', JvInterpreter_AssignStr, 2, [varByRef, varEmpty], varEmpty); AddFunction(cSysUtils, 'AppendStr', JvInterpreter_AppendStr, 2, [varByRef, varEmpty], varEmpty); {$ENDIF COMPILER5} AddFunction(cSysUtils, 'UpperCase', JvInterpreter_UpperCase, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'LowerCase', JvInterpreter_LowerCase, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'CompareStr', JvInterpreter_CompareStr, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'CompareMem', JvInterpreter_CompareMem, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'CompareText', JvInterpreter_CompareText, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiUpperCase', JvInterpreter_AnsiUpperCase, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiLowerCase', JvInterpreter_AnsiLowerCase, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiCompareStr', JvInterpreter_AnsiCompareStr, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiCompareText', JvInterpreter_AnsiCompareText, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiStrComp', JvInterpreter_AnsiStrComp, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiStrIComp', JvInterpreter_AnsiStrIComp, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiStrLComp', JvInterpreter_AnsiStrLComp, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiStrLIComp', JvInterpreter_AnsiStrLIComp, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiStrLower', JvInterpreter_AnsiStrLower, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiStrUpper', JvInterpreter_AnsiStrUpper, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiLastChar', JvInterpreter_AnsiLastChar, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiStrLastChar', JvInterpreter_AnsiStrLastChar, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'Trim', JvInterpreter_Trim, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'TrimLeft', JvInterpreter_TrimLeft, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'TrimRight', JvInterpreter_TrimRight, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'QuotedStr', JvInterpreter_QuotedStr, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiQuotedStr', JvInterpreter_AnsiQuotedStr, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiExtractQuotedStr', JvInterpreter_AnsiExtractQuotedStr, 2, [varByRef, varEmpty], varEmpty); AddFunction(cSysUtils, 'ExtractQuotedString', JvInterpreter_ExtractQuotedString, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AdjustLineBreaks', JvInterpreter_AdjustLineBreaks, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'IsValidIdent', JvInterpreter_IsValidIdent, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'IntToStr', JvInterpreter_IntToStr, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'IntToHex', JvInterpreter_IntToHex, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrToInt', JvInterpreter_StrToInt, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrToIntDef', JvInterpreter_StrToIntDef, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'LoadStr', JvInterpreter_LoadStr, 1, [varEmpty], varEmpty); // AddFunction(cSysUtils, 'FmtLoadStr', JvInterpreter_FmtLoadStr, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'FileOpen', JvInterpreter_FileOpen, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'FileCreate', JvInterpreter_FileCreate, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'FileRead', JvInterpreter_FileRead, 3, [varEmpty, varByRef, varEmpty], varEmpty); AddFunction(cSysUtils, 'FileWrite', JvInterpreter_FileWrite, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'FileSeek', JvInterpreter_FileSeek, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'FileClose', JvInterpreter_FileClose, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'FileAge', JvInterpreter_FileAge, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'FileExists', JvInterpreter_FileExists, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'FindFirst', JvInterpreter_FindFirst, 3, [varEmpty, varEmpty, varByRef], varEmpty); AddFunction(cSysUtils, 'FindNext', JvInterpreter_FindNext, 1, [varByRef], varEmpty); AddFunction(cSysUtils, 'FindClose', JvInterpreter_FindClose, 1, [varByRef], varEmpty); AddFunction(cSysUtils, 'FileGetDate', JvInterpreter_FileGetDate, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'FileSetDate', JvInterpreter_FileSetDate, 2, [varEmpty, varEmpty], varEmpty); {$IFDEF MSWINDOWS} AddFunction(cSysUtils, 'FileGetAttr', JvInterpreter_FileGetAttr, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'FileSetAttr', JvInterpreter_FileSetAttr, 2, [varEmpty, varEmpty], varEmpty); {$ENDIF MSWINDOWS} AddFunction(cSysUtils, 'DeleteFile', JvInterpreter_DeleteFile, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'RenameFile', JvInterpreter_RenameFile, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'ChangeFileExt', JvInterpreter_ChangeFileExt, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'ExtractFilePath', JvInterpreter_ExtractFilePath, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ExtractFileDir', JvInterpreter_ExtractFileDir, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ExtractFileDrive', JvInterpreter_ExtractFileDrive, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ExtractFileName', JvInterpreter_ExtractFileName, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ExtractFileExt', JvInterpreter_ExtractFileExt, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ExpandFileName', JvInterpreter_ExpandFileName, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ExpandUNCFileName', JvInterpreter_ExpandUNCFileName, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ExtractRelativePath', JvInterpreter_ExtractRelativePath, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'FileSearch', JvInterpreter_FileSearch, 2, [varEmpty, varEmpty], varEmpty); {$IFDEF MSWINDOWS} AddFunction(cSysUtils, 'DiskFree', JvInterpreter_DiskFree, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'DiskSize', JvInterpreter_DiskSize, 1, [varEmpty], varEmpty); {$ENDIF MSWINDOWS} AddFunction(cSysUtils, 'FileDateToDateTime', JvInterpreter_FileDateToDateTime, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'DateTimeToFileDate', JvInterpreter_DateTimeToFileDate, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'GetCurrentDir', JvInterpreter_GetCurrentDir, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'SetCurrentDir', JvInterpreter_SetCurrentDir, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'CreateDir', JvInterpreter_CreateDir, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'RemoveDir', JvInterpreter_RemoveDir, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrLen', JvInterpreter_StrLen, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrEnd', JvInterpreter_StrEnd, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrMove', JvInterpreter_StrMove, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrCopy', JvInterpreter_StrCopy, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrECopy', JvInterpreter_StrECopy, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrLCopy', JvInterpreter_StrLCopy, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrPCopy', JvInterpreter_StrPCopy, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrPLCopy', JvInterpreter_StrPLCopy, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrCat', JvInterpreter_StrCat, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrLCat', JvInterpreter_StrLCat, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrComp', JvInterpreter_StrComp, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrIComp', JvInterpreter_StrIComp, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrLComp', JvInterpreter_StrLComp, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrLIComp', JvInterpreter_StrLIComp, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrScan', JvInterpreter_StrScan, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrRScan', JvInterpreter_StrRScan, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrPos', JvInterpreter_StrPos, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrUpper', JvInterpreter_StrUpper, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrLower', JvInterpreter_StrLower, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrPas', JvInterpreter_StrPas, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrAlloc', JvInterpreter_StrAlloc, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrBufSize', JvInterpreter_StrBufSize, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrNew', JvInterpreter_StrNew, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrDispose', JvInterpreter_StrDispose, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'Format', JvInterpreter_Format, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'FmtStr', JvInterpreter_FmtStr, 3, [varByRef, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrFmt', JvInterpreter_StrFmt, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrLFmt', JvInterpreter_StrLFmt, 4, [varEmpty, varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'FormatBuf', JvInterpreter_FormatBuf, 5, [varByRef, varEmpty, varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'FloatToStr', JvInterpreter_FloatToStr, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'CurrToStr', JvInterpreter_CurrToStr, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'FloatToStrF', JvInterpreter_FloatToStrF, 4, [varEmpty, varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'CurrToStrF', JvInterpreter_CurrToStrF, 3, [varEmpty, varEmpty, varEmpty], varEmpty); // AddFunction(cSysUtils, 'FloatToText', JvInterpreter_FloatToText, 6, [varEmpty, varEmpty, varEmpty, varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'FormatFloat', JvInterpreter_FormatFloat, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'FormatCurr', JvInterpreter_FormatCurr, 2, [varEmpty, varEmpty], varEmpty); // AddFunction(cSysUtils, 'FloatToTextFmt', JvInterpreter_FloatToTextFmt, 4, [varEmpty, varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrToFloat', JvInterpreter_StrToFloat, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrToCurr', JvInterpreter_StrToCurr, 1, [varEmpty], varEmpty); // AddFunction(cSysUtils, 'TextToFloat', JvInterpreter_TextToFloat, 3, [varEmpty, varByRef, varEmpty], varEmpty); // AddFunction(cSysUtils, 'FloatToDecimal', JvInterpreter_FloatToDecimal, 5, [varByRef, varEmpty, varEmpty, varEmpty, varEmpty], varEmpty); { AddFunction(cSysUtils, 'DateTimeToTimeStamp', JvInterpreter_DateTimeToTimeStamp, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'TimeStampToDateTime', JvInterpreter_TimeStampToDateTime, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'MSecsToTimeStamp', JvInterpreter_MSecsToTimeStamp, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'TimeStampToMSecs', JvInterpreter_TimeStampToMSecs, 1, [varEmpty], varEmpty); } AddFunction(cSysUtils, 'EncodeDate', JvInterpreter_EncodeDate, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'EncodeTime', JvInterpreter_EncodeTime, 4, [varEmpty, varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'DecodeDate', JvInterpreter_DecodeDate, 4, [varEmpty, varByRef, varByRef, varByRef], varEmpty); AddFunction(cSysUtils, 'DecodeTime', JvInterpreter_DecodeTime, 5, [varEmpty, varByRef, varByRef, varByRef, varByRef], varEmpty); { AddFunction(cSysUtils, 'DateTimeToSystemTime', JvInterpreter_DateTimeToSystemTime, 2, [varEmpty, varByRef], varEmpty); AddFunction(cSysUtils, 'SystemTimeToDateTime', JvInterpreter_SystemTimeToDateTime, 1, [varEmpty], varEmpty); } AddFunction(cSysUtils, 'DayOfWeek', JvInterpreter_DayOfWeek, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'Date', JvInterpreter_Date, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'Time', JvInterpreter_Time, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'Now', JvInterpreter_Now, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'IncMonth', JvInterpreter_IncMonth, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'IsLeapYear', JvInterpreter_IsLeapYear, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'DateToStr', JvInterpreter_DateToStr, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'TimeToStr', JvInterpreter_TimeToStr, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'DateTimeToStr', JvInterpreter_DateTimeToStr, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrToDate', JvInterpreter_StrToDate, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrToTime', JvInterpreter_StrToTime, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'StrToDateTime', JvInterpreter_StrToDateTime, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'FormatDateTime', JvInterpreter_FormatDateTime, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'DateTimeToString', JvInterpreter_DateTimeToString, 3, [varByRef, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'SysErrorMessage', JvInterpreter_SysErrorMessage, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'GetLocaleStr', JvInterpreter_GetLocaleStr, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'GetLocaleChar', JvInterpreter_GetLocaleChar, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'GetFormatSettings', JvInterpreter_GetFormatSettings, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ExceptObject', JvInterpreter_ExceptObject, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ExceptAddr', JvInterpreter_ExceptAddr, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ExceptionErrorMessage', JvInterpreter_ExceptionErrorMessage, 4, [varEmpty, varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'ShowException', JvInterpreter_ShowException, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'Abort', JvInterpreter_Abort, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'OutOfMemoryError', JvInterpreter_OutOfMemoryError, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'Beep', JvInterpreter_Beep, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'ByteType', JvInterpreter_ByteType, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'StrByteType', JvInterpreter_StrByteType, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'ByteToCharLen', JvInterpreter_ByteToCharLen, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'CharToByteLen', JvInterpreter_CharToByteLen, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'ByteToCharIndex', JvInterpreter_ByteToCharIndex, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'CharToByteIndex', JvInterpreter_CharToByteIndex, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'IsPathDelimiter', JvInterpreter_IsPathDelimiter, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'IsDelimiter', JvInterpreter_IsDelimiter, 3, [varEmpty, varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'LastDelimiter', JvInterpreter_LastDelimiter, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiCompareFileName', JvInterpreter_AnsiCompareFileName, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiLowerCaseFileName', JvInterpreter_AnsiLowerCaseFileName, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiUpperCaseFileName', JvInterpreter_AnsiUpperCaseFileName, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiPos', JvInterpreter_AnsiPos, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiStrPos', JvInterpreter_AnsiStrPos, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiStrRScan', JvInterpreter_AnsiStrRScan, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'AnsiStrScan', JvInterpreter_AnsiStrScan, 2, [varEmpty, varEmpty], varEmpty); AddFunction(cSysUtils, 'LoadPackage', JvInterpreter_LoadPackage, 1, [varEmpty], varEmpty); AddFunction(cSysUtils, 'UnloadPackage', JvInterpreter_UnloadPackage, 1, [varEmpty], varEmpty); {$IFDEF MSWINDOWS} AddFunction(cSysUtils, 'RaiseLastWin32Error', JvInterpreter_RaiseLastWin32Error, 0, [varEmpty], varEmpty); AddFunction(cSysUtils, 'Win32Check', JvInterpreter_Win32Check, 1, [varEmpty], varEmpty); {$ENDIF MSWINDOWS} { File open modes } AddConst(cSysUtils, 'fmOpenRead', Ord(fmOpenRead)); AddConst(cSysUtils, 'fmOpenWrite', Ord(fmOpenWrite)); AddConst(cSysUtils, 'fmOpenReadWrite', Ord(fmOpenReadWrite)); {$IFDEF MSWINDOWS} AddConst(cSysUtils, 'fmShareCompat', Ord(fmShareCompat)); {$ENDIF MSWINDOWS} AddConst(cSysUtils, 'fmShareExclusive', Ord(fmShareExclusive)); AddConst(cSysUtils, 'fmShareDenyWrite', Ord(fmShareDenyWrite)); {$IFDEF MSWINDOWS} AddConst(cSysUtils, 'fmShareDenyRead', Ord(fmShareDenyRead)); {$ENDIF MSWINDOWS} AddConst(cSysUtils, 'fmShareDenyNone', Ord(fmShareDenyNone)); { File attribute constants } AddConst(cSysUtils, 'faReadOnly', Ord(faReadOnly)); AddConst(cSysUtils, 'faHidden', Ord(faHidden)); AddConst(cSysUtils, 'faSysFile', Ord(faSysFile)); {$IFNDEF COMPILER8_UP} AddConst(cSysUtils, 'faVolumeID', Ord(faVolumeID)); // deprecated {$ENDIF !COMPILER8_UP} AddConst(cSysUtils, 'faDirectory', Ord(faDirectory)); AddConst(cSysUtils, 'faArchive', Ord(faArchive)); AddConst(cSysUtils, 'faAnyFile', Ord(faAnyFile)); AddRec(cSysUtils, 'TSearchRec', SizeOf(TSearchRec), [ RFD('Time', 0, varInteger), RFD('Size', 4, varInteger), // Supports only integer size {$IFDEF DELPHI10_UP} RFD('Attr', 16, varInteger), RFD('Name', 20, varString), RFD('ExcludeAttr', 24, varInteger), RFD('FindHandle', 28, varInteger) {$ELSE} RFD('Attr', 8, varInteger), RFD('Name', 12, varString), RFD('ExcludeAttr', 16, varInteger), RFD('FindHandle', 20, varInteger) {$ENDIF} ], JvInterpreter_NewTSearchRec, JvInterpreter_DisposeTSearchRec, nil); { regional options } { global variables are not supported by JvInterpreter :( } end; end; {$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); finalization UnregisterUnitVersion(HInstance); {$ENDIF UNITVERSIONING} end.