Programando con lkJSON con el servicio REST de AFIP de consulta al padron obtengo errores de escritura/lectura de memoria.
La estructura segun la documentacion dice:
{"success":true, "data":{datosDeNegocio}}
Y dentro de datos de negocio esta "domicilioFiscal", otro nodo tratado como TJSONObject.
Mostrando el objeto general digamos (el tronco del arbol, padre de todos los nodos) me doy cuenta de que no todos los contribuyentes tienen completo ese nodo.
Como puedo no forzar el acces al valor si esta incompleto.
begin
//crear objetos a usar
NetHTTPRequestPADRON:=TNetHTTPRequest.Create(nil);
NetHTTPClientPADRON:=TNetHTTPClient.Create(nil);
//armar url del servicio
url:='https://soa.afip.gob.ar' + '/' + sistema + '/' + version + '/' + recurso + '/' + Fidentificador;
//asignar valores a componentes
NetHTTPRequestPADRON.URL:=url;
NetHTTPRequestPADRON.Client:=NetHTTPClientPADRON;
try
response:=NetHTTPRequestPADRON.Execute();
//tomo el objeto JSON
obj:=TJSONObject.ParseJSONValue(response.ContentAsString()) as TJSONobject;
objdata :=obj.Values['data'] as TJSONObject;
nombre:=objdata.Values['nombre'].ToString;
tipoDoc:=objdata.Values['tipoDocumento'].ToString;
//aca esta el objetodomicilio que no siempre existe objdomicilio:=objdata.Values['domicilioFiscal'] as TJSONObject;
direccion:=objdomicilio.Values['direccion'].ToString;
localidad:=objdomicilio.Values['localidad'].ToString;
provincia:=objdomicilio.Values['idProvincia'].ToString;
nroDoc:=Fidentificador;
impuestos:=objdata.Values['impuestos'].ToString;
ShowMessage(impuestos);
//creo el objeto cliente
NCliente:=TCliente.NuevoCliente(localidad,provincia,direccion,tipoDoc,nombre,nroDoc,impuestos);
except
on E:Exception do
ShowMessage(E.ClassName + E.Message);
end;
Gracias