tsetstream.pp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. program storedfalse;
  2. {$ifdef FPC}{$mode objfpc}{$h+}{$INTERFACES CORBA}{$endif}
  3. {$ifdef mswindows}{$apptype console}{$endif}
  4. uses
  5. {$ifdef FPC}{$ifdef linux}cthreads,{$endif}{$endif}
  6. sysutils,classes;
  7. type
  8. tenum = (eena,eenb,eenc,eend,eene,eenf,eeng,eenh,eeni);
  9. tset = set of tenum;
  10. ttestclass1 = class(tcomponent)
  11. private
  12. fprop1: tset;
  13. public
  14. property prop1: tset read fprop1 write fprop1 stored true;
  15. end;
  16. ttestclass2 = class(ttestclass1)
  17. published
  18. property prop1;
  19. end;
  20. var
  21. testclass2,testclass3: ttestclass2;
  22. stream1,stream2: tmemorystream;
  23. str1: ansistring;
  24. begin
  25. testclass2:= ttestclass2.create(nil);
  26. testclass2.prop1:= [eenb,eend,eene,eenh,eeni];
  27. stream1:= tmemorystream.create;
  28. try
  29. stream1.writecomponent(testclass2);
  30. stream2:= tmemorystream.create;
  31. try
  32. stream1.position:= 0;
  33. objectbinarytotext(stream1,stream2);
  34. stream1.position:= 0;
  35. stream2.position:= 0;
  36. setlength(str1,stream2.size);
  37. move(stream2.memory^,str1[1],length(str1));
  38. writeln(str1);
  39. testclass3:=ttestclass2.create(nil);
  40. stream1.readcomponent(testclass3);
  41. if (testclass3.prop1<>[eenb,eend,eene,eenh,eeni]) then
  42. halt(1);
  43. finally
  44. stream2.free;
  45. end;
  46. finally
  47. stream1.free;
  48. end;
  49. end.