Numa aplicação comercial, sempre temos algumas validações necessarias e básicas. Vamos criar uma validação de um campo CNPJ.
Coloque numa nova aplicação um componente TEdit(que poderia tambem ser um TDBEdit):
 
 
 
No evento OnExit do TEdit1 digite esse código:
 
procedure TForm1.Edit1Exit(Sender: TObject);
var
n:array [1..11] of integer;
m:array [1..14] of integer;
dgt1,dgt2:integer;
soma1,soma2:integer;
begin
if copy(Edit1.Text,1,1) <> '' then
   begin
m[1]:=StrToInt(copy(Edit1.Text,1,1));
m[2]:=StrToInt(copy(Edit1.Text,2,1));
  //3
m[3]:=StrToInt(copy(Edit1.Text,4,1));
m[4]:=StrToInt(copy(Edit1.Text,5,1));
m[5]:=StrToInt(copy(Edit1.Text,6,1));
  //7
m[6]:=StrToInt(copy(Edit1.Text,8,1));
m[7]:=StrToInt(copy(Edit1.Text,9,1));
m[8]:=StrToInt(copy(Edit1.Text,10,1));
//11
m[9]:=StrToInt(copy(Edit1.Text,12,1));
m[10]:=StrToInt(copy(Edit1.Text,13,1));
m[11]:=StrToInt(copy(Edit1.Text,14,1));
m[12]:=StrToInt(copy(Edit1.Text,15,1));
// 16
m[13]:=StrToInt(copy(Edit1.Text,17,1));
m[14]:=StrToInt(copy(Edit1.Text,18,1));
soma1:=(m[1]*5) + (m[2]*4) + (m[3]*3) + (m[4]*2) + (m[5]*9) + (m[6]*8) +
(m[7]*7) + (m[8]*6) + (m[9]*5) + (m[10]*4) + (m[11]*3) + (m[12]*2);
dgt1:=11-(soma1 mod 11);
if (dgt1 = 10) or (dgt1 = 11) then
dgt1:=0;
soma2:=(m[1]*6) + (m[2]*5) + (m[3]*4) + (m[4]*3) + (m[5]*2) + (m[6]*9) +
(m[7]*8) + (m[8]*7) + (m[9]*6) + (m[10]*5) + (m[11]*4) + (m[12]*3) + (dgt1*2);
dgt2:=11-(soma2 mod 11);
if (dgt2 = 10) or (dgt2 = 11) then
 dgt2:=0;
if (dgt1 <> m[13]) or (dgt2 <> m[14]) then
 begin
 showmessage('Número do CNPJ Inválido. ');
 Edit1.SetFocus;
 abort;
 end;
    end;
    end;
 
Agora para testar digite assim um CNPJ: 00.000.000/0001-00, e faça um teste..
 
 
Em breve vou fazer o mesmo exemplo para um campo CPF, até a próxima..
 
 
Jose luiz