У меня есть база данных клиентов, которую я хочу проверить на googlemaps, и если найдено координата, то обновляется широта поля.Delphi Список указателей за пределами границ
Мой код ниже, но я выполняю его, возвращает мне список ошибок индекса за пределами. Я попытался создать цикл, но что-то не так.
procedure TForm1.btnPegaCoordenadasClick(Sender: TObject);
var xTemp: TStringList;
endereco : string;
tamanho : integer;
latitude, customer: string;
begin
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned;
IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
xTemp:= TStringList.Create;
while not qryCustomer.eof do begin
endereco:= qryCustomerENDERECOGOOGLE.Value;
customer := qryCustomerCODE.Value;
IdHTTP1.Request.Accept := 'text/html, */*';
IdHTTP1.Request.UserAgent := 'Mozilla/3.0 (compatible; IndyLibrary)';
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
IdHTTP1.HandleRedirects := True;
xTemp.Text := UTF8Decode(IdHTTP1.Get('http://maps.google.com/maps/api/geocode/json?sensor=false&address='+endereco));
// position latitude
latitude := (xTemp.Strings[63]);
with ps_UpdatesCustomers do begin
Parameters.ParamByName('@latitude').Value := latitude;
Parameters.ParamByName('@customer').Value := customer;
ps_UpdatesCustomers.ExecProc;
close;
end;
qryCustomers.Next;
end;
end;
широта: = (xTemp.Strings [63]); Вы уверены, что google maps * always * возвращает 64 или более строк с этим кодом? – Dsm
у него больше строк, но я получаю позицию линии 63, которая предназначена для координат широты. –
It * не имеет больше линий. Об этом свидетельствует ваше исключение. Вы можете выполнить некоторую отладку, чтобы исследовать, сколько строк оно возвращает *, но в конечном итоге все эти разговоры о * строках * не имеют значения, потому что вы имеете дело с JSON. –