On 12-3-2013 11:44, Michael Van Canneyt wrote: Thanks for the help, Michael.
> On Tue, 12 Mar 2013, Reinier Olislagers wrote: >> //===> the line below works - so CommJSON is a valid object, right? >> if Assigned(CommJSON) then > > It is assigned, but not necessarily valid. If you freed CommJSON but did > not nil it, it is still'assigned'. Understood. Then it has a pointer pointing to whatever (probably the object's former memory location). >> I'm not confident about >> function HttpRequestWithData(AData: TJSONData; const AUrl: string; >> const AMethod: TRequestMethod; const AContentType: string): THttpResult; > > Ehm. This must be > > function HttpRequestWithData(OUT AData: TJSONData; const AUrl: string; > const AMethod: TRequestMethod; const AContentType: string): THttpResult; > > Because you are passing BACK a reference! Sorry. What I hadn't attached is the first part where the request is built up: if Assigned(AData) then begin VHttp.RequestBody := TMemoryStream.Create; VJSON := AData.AsJSON; VHttp.RequestBody.Write(Pointer(VJSON)^, Length(VJSON)); VHttp.RequestBody.Position := 0; end; ... changing the parameter to var... function HttpRequestWithData(var AData: TJSONData; const AUrl: string; const AMethod: TRequestMethod; const AContentType: string): THttpResult; ... and changing the calling objects from TJSONObject to TJSONData seemed to do the trick. Thanks a lot. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal