CRT functions/procedures made safe with overloaded Write/WriteLn implementations

This commit is contained in:
2020-06-09 03:30:39 +03:00
parent 023d565b81
commit 6ee928a133
6 changed files with 208 additions and 57 deletions

View File

@@ -6,12 +6,50 @@ unit System;
interface
const
// Open array VarType values
vtInteger = 0;
vtBoolean = 1;
vtChar = 2;
vtExtended = 3;
vtString = 4;
vtPointer = 5;
vtPChar = 6;
vtObject = 7;
vtClass = 8;
vtWideChar = 9;
vtPWideChar = 10;
vtAnsiString = 11;
vtCurrency = 12;
vtVariant = 13;
vtInterface = 14;
vtWideString = 15;
vtInt64 = 16;
type
PPAnsiChar = ^PAnsiChar;
PInteger = ^Integer;
THandle = LongWord;
PByte = ^Byte;
PWord = ^Word;
PLongWord = ^LongWord;
PLongInt = ^LongInt;
PInt64 = ^Int64;
{$IF CompilerVersion > 14}
// PUInt64 = ^UInt64;
{$IFEND}
PCardinal = ^Cardinal;
PInteger = ^Integer;
PExtended = ^Extended;
PCurrency = ^Currency;
PShortString = ^ShortString;
PVariant = ^Variant;
TGUID = record
D1: LongWord;
D2: Word;
@@ -41,6 +79,28 @@ type
OuterContext: PInitContext;
end;
PVarRec = ^TVarRec;
TVarRec = record { do not pack this record; it is compiler-generated }
case Byte of
vtInteger: (VarInteger: Integer; VarType: Byte);
vtBoolean: (VarBoolean: Boolean);
vtChar: (VarChar: Char);
vtExtended: (VarExtended: PExtended);
vtString: (VarString: PShortString);
vtPointer: (VarPointer: Pointer);
vtPChar: (VarPChar: PChar);
vtObject: (VarObject: Pointer);
vtClass: (VarClass: Pointer);
vtWideChar: (VarWideChar: WideChar);
vtPWideChar: (VarPWideChar: PWideChar);
vtAnsiString: (VarAnsiString: PAnsiChar);
vtCurrency: (VarCurrency: PCurrency);
vtVariant: (VarVariant: PVariant);
vtInterface: (VarInterface: Pointer);
vtWideString: (VarWideString: PWideChar);
vtInt64: (VarInt64: PInt64);
end;
procedure _Halt0;
procedure _HandleFinally;
procedure _StartExe(InitTable: PPackageInfo);