1234567891011121314151617181920212223242526272829303132333435363738 |
- program tw26177;
- {$MODE DELPHI}
- {$MODESWITCH TYPEHELPERS}
- uses
- Classes;
- type
- TInt32Helper = record helper for Int32
- procedure Foo(Sender: TObject);
- end;
- var
- value: Int32 = 0;
- procedure TInt32Helper.Foo(Sender: TObject);
- begin
- value := Self;
- end;
- var
- i: Int32 = 10;
- m: TNotifyEvent;
- begin
- m := i.Foo;
- // Data is equal 10 (!) but should be equal to @i
- //WriteLn(Int32(TMethod(m).Data));
- // TMethod(m).Data := @i; < workaround for bug
- try
- m(nil); // External SIGSEGV!
- if value <> 10 then
- Halt(2);
- except
- Halt(1);
- end;
- end.
|