[fpc-pascal] JSON & me - blind again?
    Reinier Olislagers 
    reinierolislagers at gmail.com
       
    Tue Mar 12 11:38:51 CET 2013
    
    
  
Hi list,
(FPC 2.6.0 or trunk)
Been fiddling a bit too long and strongly suspect PEBKAC/PICNIC (and my
seemingly perennial refusal to adapt to Object Pascal's way of dealing
with object references).
Thanks for your suggestions!
See the ===> marks below
var
  CurrentPage: integer;
  RequestResult: THttpResult;
  CommJSON: TJSONObject;
begin
  result:=INVALIDID;
  CommJSON:=TJSONObject.Create;
  try
    try
// do an HTTP request and get a JSONData back.
//
RequestResult:=HttpRequestWithData(CommJSON,FCGIURL+'document/',rmPost);
      if RequestResult.Code<>200 then
      begin
//snip error handling
      end
      else
      begin
//===> the line below works - so CommJSON is a valid object, right?
        if Assigned(CommJSON) then
        begin
//====> however, the next line gives a runerror(210): no vmt found
          if (CommJSON.JSONType=jtObject) then
          begin
            if (CommJSON.IndexOfName('documentid',false)>-1) then
              result:=CommJSON.Integers['documentid'];
          end;
        end;
      end;
I'm not confident about
function HttpRequestWithData(AData: TJSONData; const AUrl: string;
  const AMethod: TRequestMethod; const AContentType: string): THttpResult;
...
      FreeAndNil(AData);
      VData.Position := 0;
      VParser := TJSONParser.Create(VData);
      try
        try
          AData := VParser.Parse;
//====> so it destroys the object passed to it and recreates it
//====> but AData.JSONType does seem to be JSONObject...
    
    
More information about the fpc-pascal
mailing list