[Opcional] Чтобы облегчить управление зависимостями, я рекомендую использовать босс. boss install github.com/viniciussanchez/viacep
Добавьте следующую папку в свой проект в проекте> Параметры> Компилятор ресурсов> Directions и Condiçonals> Включите путь поиска файлов
../viacep/src
Вам нужно будет использовать следующие единицы: ViaCEP.Intf , ViaCEP.Core , ViaCEP.Model
uses ViaCEP.Intf, ViaCEP.Core, ViaCEP.Model; При консультациях на почтовый индекс неверного формата, например: 950100100 (9 цифр), 95010A10 (буквенно -цифровой), 95 01010 (пространство), возврат будет nil .
Метод проверки, является ли это действительным почтовым индексом или нет, просто убедитесь, что информированный почтовый индекс имеет 8 цифр и что все являются численными и могут быть доступны перед консультированием веб -сервиса через интерфейс IViaCEP с использованием метода Validate .
При консультации действительный, но несуществующий почтовый индекс формата, например: 99999999 , возврат также будет nil . Это означает, что консультации с почтовым индексом не был найден в базе данных.
Пример:
var
ViaCEP: IViaCEP;
begin
ViaCEP := TViaCEP.Create;
if ViaCEP.Validate( ' 01001000 ' ) then
ShowMessage( ' CEP válido ' )
else
ShowMessage( ' CEP inválido ' );
end ; Помните, что в приведенном выше методе нет необходимости разрушать созданный экземпляр класса TViaCEP , потому что он использует Interface .
var
ViaCEP: IViaCEP;
CEP: TViaCEPClass;
begin
ViaCEP := TViaCEP.Create;
// Aqui você pode chamar a rotina para validar se é um CEP válido.
CEP := ViaCEP.Get(edtCEPConsultar.Text);
if not Assigned(CEP) then
Exit; // Aqui você pode exibir uma mensagem para o usuário falando que o CEP não foi encontrado.
try
edtJSON.Lines.Text := CEP.ToJSONString;
edtCEP.Text := CEP.CEP;
edtLogradouro.Text := CEP.Logradouro;
edtComplemento.Text := CEP.Complemento;
edtBairro.Text := CEP.Bairro;
edtLocalidade.Text := CEP.Localidade;
edtUF.Text := CEP.UF;
edtDDD.Text := CEP.DDD;
edtIBGE.Text := CEP.IBGE;
edtGIA.Text := CEP.GIA;
finally
CEP.Free;
end ;
end ; После проведения консультации с почтовым индексом вы можете получить возвращенный контент в формате JSON TViaCEPClass используя метод. См. Пример ниже, где TMemo заполняется содержимым запроса:
var
CEP: TViaCEPClass;
begin
Memo.Lines.Text := CEP.ToJSONString;
end ; {
"cep": "01001-000",
"logradouro": "Praça da Sé",
"complemento": "lado ímpar",
"bairro": "Sé",
"localidade": "São Paulo",
"uf": "SP",
"ddd": "",
"ibge": "3550308",
"gia": "1004"
}
Доступ к форме и обновлению онлайн: обновление почтового индекса
Происхождение код муниципалитетов: сайт доступа
Происхождение Gia/ICMS (только SP доступен только): Просмотр PDF (PP.137)
Viepe - бесплатный веб -сервис CEP и IBGE: сайт доступа
