Lamw using self other object lazarus / 43-Android ---------------------------------------------------------------------- juank1971 · 2020-10-02 13:17 I have this unit  worked fine in windows is for zerialized json Bat lamw have error becouse In this line  json_str.JSONToObject(json_dat, self); of the procedure TJsonComponent.LoadFromStream(aStream: TStream); Self refered to TJsonComponent class bat self the compiller try To lamw module self I need real  object for this self  not lamw self Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i unit Unit1; {$mode objfpc}{$H+} interface uses  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,   typinfo,  jsonscanner, fpjson, fpjsonrtti; type   TJsonComponent = class(TComponent)protected  procedure propertyError(Sender : TObject; AObject : TObject; Info : PPropInfo;    AValue : TJSONData; Error : Exception; Var doContinue : Boolean); virtual;  procedure restoreProperty(Sender : TObject; AObject : TObject; Info : PPropInfo;    AValue : TJSONData;Var Handled : Boolean);public  procedure LoadFromFile(const aFilename: string); virtual;  procedure SaveToFile(const aFilename: string); virtual;  procedure LoadFromStream(aStream: TStream);  procedure SaveToStream(aStream: TStream);end; TJSonBindDemo = class(TJsonComponent)private  fFirstName: string;  fLastName: string;  fAge: integer;published  property FirstName: string read fFirstName write fFirstName;  property LastName: string read fLastName write fLastName;  property Age: integer read fAge write fAge;end;     { TForm1 }   TForm1 = class(TForm)    Button1: TButton;    procedure Button1Click(Sender: TObject);  private   public   end; const  jsondata: string = '{"FirstName": "Sophia",'+                       '"LastName": "X",'+                    ' "Age": "25"}'; var  Form1: TForm1;   obj: TJSonBindDemo;  str: TStream; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject);begin   obj := TJSonBindDemo.Create(nil);  str := TMemoryStream.Create;  str.Write(jsondata[1], length(jsondata));  obj.LoadFromStream(str);   ShowMessage(obj.FirstName);  ShowMessage(obj.LastName);  ShowMessage(obj.Age.ToString);   str.Free;  obj.Free;end;  procedure TJsonComponent.restoreProperty(Sender : TObject; AObject : TObject; Info : PPropInfo;  AValue : TJSONData; Var Handled : Boolean);beginend; procedure TJsonComponent.propertyError(Sender : TObject; AObject : TObject; Info : PPropInfo;  AValue : TJSONData; Error : Exception; Var doContinue : Boolean);beginend; procedure TJsonComponent.LoadFromStream(aStream: TStream);var  json_str: TJSONDeStreamer;  json_dat: TJSONStringType;  t:TJSONObject;begin  json_str := TJSONDeStreamer.Create(nil);  try    aStream.Position:=0;    json_str.OnPropertyError:= @propertyError;    json_str.OnRestoreProperty := @restoreProperty;    setLength(json_dat, aStream.Size);    aStream.Read(json_dat[1], length(json_dat));    json_str.JSONToObject(json_dat, self);   finally    json_str.Free;  end;end; procedure TJsonComponent.SaveToStream(aStream: TStream);var  json_str: TJSONStreamer;  json_dat: TJSONStringType;begin  json_str := TJSONStreamer.Create(nil);  try    json_dat := json_str.ObjectToJSONString(self);    aStream.Write(json_dat[1], length(json_dat));  finally    json_str.Free;  end;end; procedure TJsonComponent.LoadFromFile(const aFilename: string);var  str: TMemoryStream;begin  str:= TMemoryStream.Create;  try    str.LoadFromFile(aFilename);    LoadFromStream(str);  finally    str.Free;  end;end; procedure TJsonComponent.SaveToFile(const aFilename: string);var  str: TMemoryStream;begin  str:= TMemoryStream.Create;  try    SaveToStream(str);    str.SaveToFile(aFilename);  finally    str.Free;  end;end;     end. ---------------------------------------------------------------------- jmpessoa · 2020-10-02 17:36 You can try use the  "json_str" reference  not "self".....