[Opcional] Para facilitar la gestión de la dependencia, recomiendo usar BOSS. boss install github.com/viniciussanchez/viacep
Agregue la siguiente carpeta a su proyecto en Proyecto> Opciones> Compilador de recursos> Dirección y Condiçonals> Incluya la ruta de búsqueda de archivos
../viacep/src
Deberá hacer el uso de las siguientes unidades: ViaCEP.Intf , ViaCEP.Core , ViaCEP.Model
uses ViaCEP.Intf, ViaCEP.Core, ViaCEP.Model; Cuando se consultó un código postal de formato no válido, por ejemplo: 950100100 (9 dígitos), 95010A10 (alfanumérico), 95 01010 (espacio), la devolución será nil .
El método de validar si se trata de un código postal válido o no, solo asegúrese de que el código postal informado tenga 8 dígitos y que todos sean numéricos y se pueda acceder antes de consultar el servicio web a través de la interfaz IViaCEP utilizando el método Validate .
Cuando se consultó un código postal de formato válido pero inexistente, por ejemplo: 99999999 , el retorno también será nil . Esto significa que el código postal consultado no se encontró en la base de datos.
Ejemplo:
var
ViaCEP: IViaCEP;
begin
ViaCEP := TViaCEP.Create;
if ViaCEP.Validate( ' 01001000 ' ) then
ShowMessage( ' CEP válido ' )
else
ShowMessage( ' CEP inválido ' );
end ; Recuerde que en el método anterior, no es necesario destruir la instancia creada de la clase TViaCEP , porque está utilizando una 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 ; Una vez que realice la consulta del código postal, puede obtener el contenido devuelto en formato JSON utilizando el método .ToJSonstring disponible en la clase TViaCEPClass . Vea el ejemplo a continuación, donde un TMemo está poblado con el contenido de la consulta:
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"
}
Acceder al formulario y actualizar en línea: actualizar el código postal
Código de municipios de origen IBGE: Sitio de acceso
Código de origen GIA/ICMS (solo SP disponible): Ver PDF (pp.137)
ViCEP - WebService CEP e IBGE gratuito: sitio de acceso
