Advertisement
Guest User

Access Violation in Marshal / Unmarshal (Delphi 10 Seattle)

a guest
Oct 31st, 2015
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.26 KB | None | 0 0
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4. {$R *.res}
  5.  
  6. uses
  7.   System.SysUtils, System.Classes, System.JSON, Data.DBXJSONReflect;
  8.  
  9. function Marshal(AObject: TObject): string;
  10. var
  11.   Marshaller: TJSONMarshal;
  12. begin
  13.   Marshaller := TJSONMarshal.Create;
  14.   try
  15.     Result := Marshaller.Marshal(AObject).ToJSON;
  16.   finally
  17.     FreeAndNil(Marshaller);
  18.   end;
  19. end;
  20.  
  21. function Unmarshal(AString: string): TStringList;
  22. var
  23.   Unmarshaller: TJSONUnMarshal;
  24.   JV: TJSONValue;
  25. begin
  26.   Unmarshaller := TJSONUnMarshal.Create;
  27.   try
  28.     JV := TJSONObject.ParseJSONValue(AString);
  29.     try
  30.       Result := Unmarshaller.Unmarshal(JV) as TStringList;
  31.     finally
  32.       FreeAndNil(JV);
  33.     end;
  34.   finally
  35.     FreeAndNil(Unmarshaller);
  36.   end;
  37. end;
  38.  
  39. function MarshalUnmarshal: string;
  40. var
  41.   StringList: TStringList;
  42.   Marshaled: string;
  43. begin
  44.   StringList := TStringList.Create;
  45.   try
  46.     StringList.Text := 'abc';
  47.     Marshaled := Marshal(StringList);
  48.   finally
  49.     FreeAndNil(StringList);
  50.   end;
  51.  
  52.   StringList := Unmarshal(Marshaled);
  53.   try
  54.     Result := StringList.Text;
  55.   finally
  56.     FreeAndNil(StringList);
  57.   end;
  58. end;
  59.  
  60. begin
  61.   try
  62.     Writeln(MarshalUnmarshal);
  63.   except
  64.     on E: Exception do
  65.       Writeln(E.ClassName, ': ', E.Message);
  66.   end;
  67.  
  68. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement