testaoc.pp 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. Program TestAOC;
  2. { Program to test array of const }
  3. { All elements of the following record must be tested :
  4. Elements not yet tested are commented out.
  5. Type
  6. PVarRec = ^TVarRec;
  7. TVarRec = record
  8. case vType: Byte of
  9. vtInteger : (VInteger: Integer; VType:Longint);
  10. vtBoolean : (VBoolean: Boolean);
  11. vtChar : (VChar: Char);
  12. vtExtended : (VExtended: PExtended);
  13. vtString : (VString: PShortString);
  14. vtPointer : (VPointer: Pointer);
  15. vtPChar : (VPChar: PChar);
  16. vtObject : (VObject: TObject);
  17. vtClass : (VClass: TClass);
  18. // vtWideChar : (VWideChar: WideChar);
  19. // vtPWideChar : (VPWideChar: PWideChar);
  20. vtAnsiString : (VAnsiString: Pointer);
  21. // vtCurrency : (VCurrency: PCurrency);
  22. // vtVariant : (VVariant: PVariant);
  23. // vtInterface : (VInterface: Pointer);
  24. // vtWideString : (VWideString: Pointer);
  25. // vtInt64 : (VInt64: PInt64);
  26. end;
  27. }
  28. Procedure Testit (Args: Array of const);
  29. Var I : longint;
  30. begin
  31. If High(Args)<0 then
  32. begin
  33. Writeln ('No aguments');
  34. exit;
  35. end;
  36. Writeln ('Got ',High(Args)+1,' arguments :');
  37. For i:=0 to High(Args) do
  38. begin
  39. write ('Argument ',i,' has type ');
  40. case Args[i].vtype of
  41. vtinteger : Writeln ('Integer, Value :',args[i].vinteger);
  42. vtboolean : Writeln ('Boolean, Value :',args[i].vboolean);
  43. vtchar : Writeln ('Char, value : ',args[i].vchar);
  44. vtextended : Writeln ('Extended, value : ',args[i].VExtended^);
  45. vtString : Writeln ('ShortString, value :',args[i].VString^);
  46. vtPointer : Writeln ('Pointer, value : ',Longint(Args[i].VPointer));
  47. vtPChar : Writeln ('PCHar, value : ',Args[i].VPChar);
  48. vtObject : Writeln ('Object, name : ',Args[i].VObject.Classname);
  49. vtClass : Writeln ('Class reference, name : ',Args[i].VClass.Classname);
  50. vtAnsiString : Writeln ('AnsiString, value :',AnsiString(Args[I].VAnsiString));
  51. {
  52. vtWideChar : (VWideChar: WideChar);
  53. vtPWideChar : (VPWideChar: PWideChar);
  54. vtCurrency : (VCurrency: PCurrency);
  55. vtVariant : (VVariant: PVariant);
  56. vtInterface : (VInterface: Pointer);
  57. vtWideString : (VWideString: Pointer);
  58. vtInt64 : (VInt64: PInt64);
  59. }
  60. else
  61. Writeln ('(Unknown) : ',args[i].vtype);
  62. end;
  63. end;
  64. end;
  65. Const P1 : Pchar = 'Eerste Pchar';
  66. p2 : Pchar = 'Tweede pchar';
  67. Var ObjA,ObjB : TObject;
  68. ACLass,BClass : TClass;
  69. S,T : AnsiString;
  70. begin
  71. ObjA:=TObject.Create;
  72. ObjB:=TObject.Create;
  73. AClass:=TObject;
  74. S:='Ansistring 1';
  75. T:='AnsiString 2';
  76. writeln ('Size of VarRec : ',Sizeof(TVarRec));
  77. Testit ([1,2]);
  78. Testit (['A','B']);
  79. Testit ([TRUE,FALSE,TRUE]);
  80. Testit (['String','Another string']);
  81. Testit ([S,T]) ;
  82. Testit ([P1,P2]);
  83. Testit ([@testit,Nil]);
  84. Testit ([ObjA,ObjB]);
  85. Testit ([1.234,1.234]);
  86. TestIt ([AClass]);
  87. end.