Veja neste artigo como efetuar a validação de CEP utilizando uma função desenvolvida em Delphi chamada ChecaCEP.

Para desenvolver esse exemplo você precisará de um Button e 2 Edits em seu formulário. Veja baixo o código como deverá ficar seu formulário.


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
  Button1: TButton;
  Edit1: TEdit;
  Edit2: TEdit;
  procedure Button1Click(Sender: TObject);
 private
 { Private declarations }
 
 public
 { Public declarations }
  function ChecaCEP(cCep: string ; cEstado: string): Boolean;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
function Tform1.ChecaCEP(cCep: string ; cEstado: string): Boolean;
var
 cCEP1 : Integer;
begin
 cCep := copy(cCep,1,5) + copy(cCep,7,3);
 cCEP1 := StrToInt(copy(cCep,1,3));
 if Length(trim(cCep)) > 0 then
 begin
  if (StrToInt(cCep) <= 1000000.0) then
   begin
    MessageDlg('CEP tem que ser maior que [01000-000]',mtError,[mbOk],0);
    Result := False
   end
  else
  begin
    if Length(trim(copy(cCep,6,3))) < 3 then Result := False else
    if (cEstado = 'SP') and (cCEP1 >= 10 ) and (cCEP1 <= 199) then Result := True else
    if (cEstado = 'RJ') and (cCEP1 >= 200) and (cCEP1 <= 289) then Result := True else
    if (cEstado = 'ES') and (cCEP1 >= 290) and (cCEP1 <= 299) then Result := True else
    if (cEstado = 'MG') and (cCEP1 >= 300) and (cCEP1 <= 399) then Result := True else
    if (cEstado = 'BA') and (cCEP1 >= 400) and (cCEP1 <= 489) then Result := True else
    if (cEstado = 'SE') and (cCEP1 >= 490) and (cCEP1 <= 499) then Result := True else
    if (cEstado = 'PE') and (cCEP1 >= 500) and (cCEP1 <= 569) then Result := True else
    if (cEstado = 'AL') and (cCEP1 >= 570) and (cCEP1 <= 579) then Result := True else
    if (cEstado = 'PB') and (cCEP1 >= 580) and (cCEP1 <= 589) then Result := True else
    if (cEstado = 'RN') and (cCEP1 >= 590) and (cCEP1 <= 599) then Result := True else
    if (cEstado = 'CE') and (cCEP1 >= 600) and (cCEP1 <= 639) then Result := True else
    if (cEstado = 'PI') and (cCEP1 >= 640) and (cCEP1 <= 649) then Result := True else
    if (cEstado = 'MA') and (cCEP1 >= 650) and (cCEP1 <= 659) then Result := True else
    if (cEstado = 'PA') and (cCEP1 >= 660) and (cCEP1 <= 688) then Result := True else
    if (cEstado = 'AM') and ((cCEP1 >= 690) and (cCEP1 <= 692) or (cCEP1 >= 694) and
 
    (cCEP1 <= 698)) then Result := True else
    if (cEstado = 'AP') and (cCEP1 = 689) then Result := True else
    if (cEstado = 'RR') and (cCEP1 = 693) then Result := True else
    if (cEstado = 'AC') and (cCEP1 = 699) then Result := True else
    if ((cEstado = 'DF') or (cEstado = 'GO')) and (cCEP1 >= 000)and(cCEP1 <= 999)then
    Result := True else
    if (cEstado = 'TO') and (cCEP1 >= 770) and (cCEP1 <= 779) then Result := True else   
    if (cEstado = 'MT') and (cCEP1 >= 780) and (cCEP1 <= 788) then Result := True else
    if (cEstado = 'MS') and (cCEP1 >= 790) and (cCEP1 <= 799) then Result := True else
    if (cEstado = 'RO') and (cCEP1 = 789) then Result := True else
    if (cEstado = 'PR') and (cCEP1 >= 800) and (cCEP1 <= 879) then Result := True else
    if (cEstado = 'SC') and (cCEP1 >= 880) and (cCEP1 <= 899) then Result := True else
    if (cEstado = 'RS') and (cCEP1 >= 900) and (cCEP1 <= 999) then Result := True else
   
    Result := False
  end;
 end
 else
 begin
  Result := True;
 end
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if ChecaCEP(Edit1.Text, edit2.text)=true then
  showmessage ('cep válido!')
 else
  showmessage ('cep inválido!');
end;

end.

Confira também