mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 06:08:22 +02:00

of the jdk15 unit in that case) * adjusted testall.sh script so it can also be used to test class files compiled for Android (still with the JVM though) git-svn-id: branches/jvmbackend@19835 -
125 lines
4.1 KiB
ObjectPascal
125 lines
4.1 KiB
ObjectPascal
{$mode objfpc}
|
|
Program tarray2;
|
|
|
|
{$ifdef cpujvm}
|
|
uses
|
|
{$ifdef java}jdk15{$else}androidr14{$endif};
|
|
|
|
{$macro on}
|
|
{$define writeln:=jlsystem.fout.println}
|
|
{$define write:=jlsystem.fout.print}
|
|
|
|
{$else}
|
|
uses
|
|
SysUtils;
|
|
{$endif}
|
|
|
|
{ Program to test array of const }
|
|
|
|
{ All elements of the following record must be tested :
|
|
Elements not yet tested are commented out.
|
|
|
|
Type
|
|
PVarRec = ^TVarRec;
|
|
TVarRec = record
|
|
case vType: Byte of
|
|
vtInteger : (VInteger: Integer; VType:Longint);
|
|
vtBoolean : (VBoolean: Boolean);
|
|
vtChar : (VChar: Char);
|
|
vtExtended : (VExtended: PExtended);
|
|
vtString : (VString: PShortString);
|
|
vtPointer : (VPointer: Pointer);
|
|
vtPChar : (VPChar: PChar);
|
|
vtObject : (VObject: TObject);
|
|
vtClass : (VClass: TClass);
|
|
// vtWideChar : (VWideChar: WideChar);
|
|
// vtPWideChar : (VPWideChar: PWideChar);
|
|
vtAnsiString : (VAnsiString: Pointer);
|
|
// vtCurrency : (VCurrency: PCurrency);
|
|
// vtVariant : (VVariant: PVariant);
|
|
// vtInterface : (VInterface: Pointer);
|
|
// vtWideString : (VWideString: Pointer);
|
|
vtInt64 : (VInt64: PInt64);
|
|
vtQWord : (VQWord: PQWord);
|
|
end;
|
|
}
|
|
|
|
procedure testit2 (args: array of byte);
|
|
begin
|
|
end;
|
|
|
|
Procedure Testit (Args: Array of const);
|
|
|
|
Var I : longint;
|
|
|
|
begin
|
|
If High(Args)<0 then
|
|
begin
|
|
Writeln ('No aguments');
|
|
exit;
|
|
end;
|
|
Write ('Got '); Write (High(Args)+1); Writeln(' arguments :');
|
|
For i:=0 to High(Args) do
|
|
begin
|
|
write ('Argument '); write(i); write(' has type ');
|
|
case Args[i].vtype of
|
|
vtinteger : begin Write ('Integer, Value :'); Writeln(args[i].vinteger); end;
|
|
vtboolean : begin Write ('Boolean, Value :'); Writeln(args[i].vboolean); end;
|
|
vtchar : begin Write ('Char, value : '); Writeln(args[i].vchar); end;
|
|
vtextended : begin Write ('Extended, value : '); Writeln(args[i].VExtended^); end;
|
|
vtString : begin Write ('ShortString, value :'); Writeln(unicodestring(args[i].VString^)); end;
|
|
vtPointer : begin Write ('Pointer, toString : '); if assigned(Args[i].VPointer) then Writeln(JLString(JLObject(Args[i].VPointer).toString)) else writeln('nil') end;
|
|
vtPChar : begin Write ('PCHar, value : '); Writeln(unicodestring(Ansistring(Args[i].VPChar))); end;
|
|
vtObject : begin Write ('Object, toString : '); if assigned(Args[i].VObject) then Writeln(JLString(Args[i].VObject.toString)) else writeln('nil') end;
|
|
vtClass : begin Write ('Class reference, toString : '); Writeln(JLString(JLClass(Args[i].VClass).toString)); end;
|
|
vtAnsiString : begin Write ('AnsiString, value :'); Writeln(unicodestring(AnsiString(Args[I].VAnsiString))); end;
|
|
|
|
{
|
|
vtWideChar : (VWideChar: WideChar);
|
|
vtPWideChar : (VPWideChar: PWideChar);
|
|
vtCurrency : (VCurrency: PCurrency);
|
|
vtVariant : (VVariant: PVariant);
|
|
vtInterface : (VInterface: Pointer);
|
|
vtWideString : (VWideString: Pointer);
|
|
}
|
|
vtInt64 : begin Write ('Int64, value : '); Writeln(args[i].VInt64^); end;
|
|
vtQWord : begin Write ('QWord, value : '); Writeln(int64(args[i].VQWord^)); end;
|
|
else
|
|
begin Write ('(Unknown) : '); Writeln(args[i].vtype); end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
Const P1 : Pchar = 'Eerste Pchar';
|
|
p2 : Pchar = 'Tweede pchar';
|
|
|
|
Var ObjA,ObjB : TObject;
|
|
ACLass,BClass : TClass;
|
|
S,T : AnsiString;
|
|
|
|
begin
|
|
ObjA:=TObject.Create;
|
|
ObjB:=TObject.Create;
|
|
AClass:=TObject;
|
|
S:='Ansistring 1';
|
|
T:='AnsiString 2';
|
|
Write ('Size of VarRec : '); Writeln(Sizeof(TVarRec));
|
|
Testit ([]);
|
|
Testit ([1,2]);
|
|
Testit (['A','B']);
|
|
Testit ([TRUE,FALSE,TRUE]);
|
|
Testit (['String','Another string']);
|
|
Testit ([S,T]) ;
|
|
Testit ([P1,P2]);
|
|
Testit ([@testit,Nil]);
|
|
Testit ([ObjA,ObjB]);
|
|
Testit ([1.234,1.234]);
|
|
TestIt ([AClass]);
|
|
TestIt ([QWord(1234)]);
|
|
TestIt ([Int64(1234)]);
|
|
TestIt ([Int64(12341234)*1000000000+Int64(12341234)]);
|
|
|
|
TestIt2 ([]);
|
|
TestIt2 ([1,2]);
|
|
end.
|