tw28271.pp 1002 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. { %OPT=-gh }
  2. program tw28271;
  3. {$mode delphi}{$H+}
  4. uses
  5. {$IFDEF UNIX}
  6. cthreads,
  7. {$ENDIF}
  8. Classes
  9. { you can add units after this };
  10. type
  11. TMyMsgDlg=class
  12. private
  13. class procedure SyncFree;
  14. class procedure SyncCreate;
  15. public
  16. class procedure StaticCreate;
  17. class procedure StaticFree;
  18. end;
  19. var
  20. Dlg:TMyMsgDlg;
  21. class procedure TMyMsgDlg.SyncCreate;
  22. begin
  23. Dlg:=TMyMsgDlg.Create;
  24. end;
  25. class procedure TmyMsgDlg.SyncFree;
  26. begin
  27. if Assigned(Dlg) then
  28. Dlg.free;
  29. Dlg:=nil;
  30. end;
  31. class procedure TMyMsgDlg.StaticCreate;
  32. begin
  33. if IsLibrary then
  34. SyncCreate
  35. else
  36. TThread.Synchronize(nil,SyncCreate);
  37. end;
  38. class procedure TMyMsgDlg.StaticFree;
  39. begin
  40. if IsLibrary then
  41. SyncFree
  42. else
  43. begin
  44. TThread.Synchronize(nil,SyncFree)
  45. end;
  46. end;
  47. begin
  48. HaltOnNotReleased := True;
  49. //writeln('Create');
  50. TMyMsgDlg.StaticCreate;
  51. //writeln('Free');
  52. TMyMsgDlg.StaticFree;
  53. //writeln('Done');
  54. end.