t_id
1407
t_adddate
2004/12/05
t_result
0
t_knownrunerror
0
Record count: 50
Total = 50
OK=50 Percentage= 100.00
Result type | Cat. | Count | Percentage | First date | Last Date |
Successfully run | 50 | 100.0 | 2024/09/26 18:42:00 90 | 2024/09/26 23:02:00 44 | |
i386 | 4 | 8.0 | 2024/09/26 19:54:00 70 | 2024/09/26 22:38:00 79 | |
powerpc | 14 | 28.0 | 2024/09/26 19:41:00 35 | 2024/09/26 23:02:00 44 | |
powerpc64 | 17 | 34.0 | 2024/09/26 18:42:00 90 | 2024/09/26 22:29:00 103 | |
wasm32 | 7 | 14.0 | 2024/09/26 19:31:00 339 | 2024/09/26 22:50:00 299 | |
riscv64 | 8 | 16.0 | 2024/09/26 19:14:00 123 | 2024/09/26 19:59:00 123 | |
linux | 39 | 78.0 | 2024/09/26 18:42:00 90 | 2024/09/26 23:02:00 44 | |
go32v2 | 4 | 8.0 | 2024/09/26 19:54:00 70 | 2024/09/26 22:38:00 79 | |
wasi | 7 | 14.0 | 2024/09/26 19:31:00 339 | 2024/09/26 22:50:00 299 | |
3.3.1 | 34 | 68.0 | 2024/09/26 18:42:00 90 | 2024/09/26 22:50:00 299 | |
3.2.3 | 16 | 32.0 | 2024/09/26 21:17:00 71 | 2024/09/26 23:02:00 44 |
{ $Id: tprocvar3.pp,v 1.1 2004/12/04 17:15:36 peter Exp $ This program tries to test any aspect of procedure variables and related stuff in Delphi mode } {$ifdef fpc} {$mode delphi} {$endif} Type TMyRecord = Record MyProc1,MyProc2 : Procedure(l : longint); MyVar : longint; end; procedure do_error(i : longint); begin writeln('Error near: ',i); halt(1); end; var globalvar : longint; type tpoo_rec = record procpointer : pointer; s : pointer; end; procedure callmethodparam(s : pointer;addr : pointer;param : longint); var p : procedure(param : longint) of object; begin tpoo_rec(p).procpointer:=addr; tpoo_rec(p).s:=s; p(param); end; type to1 = object constructor init; procedure test1; procedure test2(l : longint); procedure test3(l : longint);virtual;abstract; end; to2 = object(to1) procedure test3(l : longint);virtual; end; constructor to1.init; begin end; procedure to1.test1; var p:pointer; begin // useless only a semantic test p:=@to1.test1; // this do we use to do some testing p:=@to1.test2; globalvar:=0; callmethodparam(@self,p,1234); if globalvar<>1234 then do_error(1000); end; procedure to1.test2(l : longint); begin globalvar:=l; end; procedure to2.test3(l : longint); begin globalvar:=l; end; procedure testproc(l : longint); begin globalvar:=l; end; const constmethodaddr : pointer = @to1.test2; MyRecord : TMyRecord = ( MyProc1 : TestProc; MyProc2 : TestProc; MyVar : 0; ); var o1 : to1; o2 : to2; p : procedure(l : longint) of object; begin { Simple procedure variables } writeln('Procedure variables'); globalvar:=0; MyRecord.MyProc1(1234); if globalvar<>1234 then do_error(2000); globalvar:=0; MyRecord.MyProc2(4321); if globalvar<>4321 then do_error(2001); writeln('Ok'); { } { Procedures of objects } { } o1.init; o2.init; writeln('Procedures of objects'); p:=o1.test2; globalvar:=0; p(12); if globalvar<>12 then do_error(1002); writeln('Ok'); p:=o2.test3; globalvar:=0; p(12); if globalvar<>12 then do_error(1004); writeln('Ok'); { } { Pointers and addresses of procedures } { } writeln('Getting an address of a method as pointer'); o1.test1; globalvar:=0; callmethodparam(@o1,constmethodaddr,34); if globalvar<>34 then do_error(1001); writeln('Ok'); end. { $Log: tprocvar3.pp,v $ Revision 1.1 2004/12/04 17:15:36 peter * delphi mode procvar Revision 1.6 2002/09/07 15:40:49 peter * old logs removed and tabs fixed }