domingo, 27 de maio de 2007
sábado, 26 de maio de 2007
Rotina em DELPHI para Validar CPF e CNPJ
Esta "unit" tem a finalidade de testar o valor de um CPF digitado por um usuário
em uma interface adequada, conforme a figura ao lado.
unit Unit_CPF_Painel_Central;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, jpeg;
type
TFrm_CPF_Painel_Central = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Label1: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Panel1: TPanel;
GroupBox2: TGroupBox;
Edit2: TEdit;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
GroupBox3: TGroupBox;
Edit3: TEdit;
Label2: TLabel;
Label3: TLabel;
BitBtn5: TBitBtn;
Button1: TButton;
Memo1: TMemo;
Panel2: TPanel;
BitBtn6: TBitBtn;
Image1: TImage;
//===============
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
//===============
private
{ Private declarations }
function alx_boo_CPF_Validado(alx_str_cpf_digitado: String) : Boolean;
function alx_boo_CNPJ_Validado(alx_str_cnpj_digitado: String): Boolean;
//===============
public
{ Public declarations }
end;
var
Frm_CPF_Painel_Central: TFrm_CPF_Painel_Central;
implementation
{$R *.dfm}
//==============================================================================
function TFrm_CPF_Painel_Central.alx_boo_CPF_Validado(alx_str_cpf_digitado: String): Boolean;
var
alx_int_position : Array [1..11] of Integer;
alx_int_controle_d1 : Integer; alx_int_controle_d2 : Integer;
alx_str_controle_1 : String; alx_str_controle_2 : String;
alx_boo_apoio : Boolean; alx_int_i : Integer;
alx_int_j : Integer;
begin
try
alx_int_controle_d1:= 0;
alx_int_controle_d2:= 0;
if (System.Length(alx_str_cpf_digitado) = 11) then begin
for alx_int_i:= 1 to 9 do begin
alx_int_position[alx_int_i]:= strtoint(alx_str_cpf_digitado [alx_int_i]);
alx_int_controle_d1:= alx_int_controle_d1 + alx_int_position[alx_int_i]*(11 - alx_int_i)
end;
alx_int_position[10]:= strtoint(alx_str_cpf_digitado[10]);
alx_int_position[11]:= strtoint(alx_str_cpf_digitado[11]);
//------------------
alx_int_controle_d1:= 11 - (alx_int_controle_d1 mod 11);
if(alx_int_controle_d1 >= 10) then begin
alx_int_controle_d1:= 0;
end;
for alx_int_j:= 1 to 9 do begin
alx_int_controle_d2:= alx_int_controle_d2 + alx_int_position[alx_int_j]*(12 - alx_int_j);
end;
alx_int_controle_d2:= alx_int_controle_d2 + alx_int_controle_d1*(2);
alx_int_controle_d2:= 11 - (alx_int_controle_d2 mod 11);
if(alx_int_controle_d2 >= 10) then begin
alx_int_controle_d2:= 0;
end;
//-------------------
alx_str_controle_1:= inttostr(alx_int_controle_d1) + inttostr(alx_int_controle_d2);
alx_str_controle_2:= alx_str_cpf_digitado[10] + alx_str_cpf_digitado[11];
//-------------------
if(alx_str_controle_1 = alx_str_controle_2) then begin
alx_boo_apoio:= true;
end
else begin
alx_boo_apoio:= false;
end;
//--------------------
end
else begin
self.Edit1.SetFocus();
showmessage('Você apresentou um CPF com [' + inttostr(System.Length(alx_str_cpf_digitado)) + '] digitos. Digite o CPF com 11 números! ');
alx_boo_apoio:= false;
end;
except
on E: Exception do begin
self.Edit1.SetFocus();
showmessage('Digite o CPF com 11 dígitos numéricos! Veja: ' + E.Message);
alx_boo_apoio:= false;
end;
end;
result:= alx_boo_apoio;
end;
//==============================================================================
function TFrm_CPF_Painel_Central.alx_boo_CNPJ_Validado(alx_str_cnpj_digitado: String): Boolean;
var
alx_int_position : Array [1..14] of Integer;
alx_int_controle_d1 : Integer;
alx_int_controle_d2 : Integer;
alx_str_controle_1 : String;
alx_str_controle_2 : String;
alx_boo_apoio : Boolean;
alx_int_i : Integer;
alx_int_j : Integer;
begin
try
alx_int_controle_d1:= 0;
alx_int_controle_d2:= 0;
if (System.Length(alx_str_cnpj_digitado) = 14) then begin
for alx_int_i:= 1 to 12 do begin
alx_int_position[alx_int_i]:= strtoint(alx_str_cnpj_digitado[alx_int_i]);
end;
alx_int_position[13]:= strtoint(alx_str_cnpj_digitado[13]);
alx_int_position[14]:= strtoint(alx_str_cnpj_digitado[14]);
//------------------
alx_int_controle_d1:= alx_int_position[1]*(5) + alx_int_position[2]*(4) + alx_int_position[3]*(3) + alx_int_position[4]*(2);
alx_int_controle_d1:= alx_int_controle_d1 + alx_int_position[5]*(9) + alx_int_position[6]*(8) + alx_int_position[7]*(7);
alx_int_controle_d1:= alx_int_controle_d1 + alx_int_position[8]*(6) + alx_int_position[9]*(5) + alx_int_position[10]*(4);
alx_int_controle_d1:= alx_int_controle_d1 + alx_int_position[11]*(3) + alx_int_position[12]*(2);
//------------------
alx_int_controle_d1:= 11 - (alx_int_controle_d1 mod 11);
if(alx_int_controle_d1 >= 10) then begin
alx_int_controle_d1:= 0;
end;
//------------------
alx_int_controle_d2:= alx_int_position[1]*(6) + alx_int_position[2]*(5) + alx_int_position[3]*(4) + alx_int_position[4]*(3);
alx_int_controle_d2:= alx_int_controle_d2 + alx_int_position[5]*(2) + alx_int_position[6]*(9) + alx_int_position[7]*(8);
alx_int_controle_d2:= alx_int_controle_d2 + alx_int_position[8]*(7) + alx_int_position[9]*(6) + alx_int_position[10]*(5);
alx_int_controle_d2:= alx_int_controle_d2 + alx_int_position[11]*(4) + alx_int_position[12]*(3) + alx_int_controle_d1*(2);
//------------------
alx_int_controle_d2:= 11 - (alx_int_controle_d2 mod 11);
if(alx_int_controle_d2 >= 10) then begin
alx_int_controle_d2:= 0;
end;
//-------------------
alx_str_controle_1:= inttostr(alx_int_controle_d1) + inttostr(alx_int_controle_d2);
alx_str_controle_2:= alx_str_cnpj_digitado[13] + alx_str_cnpj_digitado[14];
//-------------------
if(alx_str_controle_1 = alx_str_controle_2) then begin
alx_boo_apoio:= true;
end
else begin
alx_boo_apoio:= false;
end;
//--------------------
end
else begin
self.Edit2.SetFocus();
showmessage('Você apresentou um CNPJ com [' + inttostr(System.Length(alx_str_cnpj_digitado)) + '] digitos. Digite o CNPJ com 14 números! ');
alx_boo_apoio:= false;
end;
except
on E: Exception do begin
self.Edit2.SetFocus();
showmessage('Digite o CNPJ com 14 dígitos numéricos! Veja: ' + E.Message);
alx_boo_apoio:= false;
end;
end;
result:= alx_boo_apoio;
end;
//==============================================================================
procedure TFrm_CPF_Painel_Central.BitBtn6Click(Sender: TObject);
begin
self.Close();
end;
//==============================================================================
//=== ... ao clicar neste botão a verificação do CPF será realizada...
//==============================================================================
procedure TFrm_CPF_Painel_Central.BitBtn1Click(Sender: TObject);
begin
if(self.alx_boo_CPF_Validado(self.Edit1.Text)) then begin
showmessage('O cpf [' + self.Edit1.Text + '] está correto!');
end
else begin
showmessage('O cpf [' + self.Edit1.Text + '] NÃO ESTÁ correto!');
end;
end;
//==============================================================================
procedure TFrm_CPF_Painel_Central.BitBtn2Click(Sender: TObject);
var
alx_int_resto: Integer;
begin
alx_int_resto:= (4 mod 3);
showmessage('o resto da divisão de 4 por 3 é: [' + inttostr(alx_int_resto) + ']');
end;
//==============================================================================
//=== ... ao clicar neste botão a verificação de CNPJ será realizada...
//==============================================================================
procedure TFrm_CPF_Painel_Central.BitBtn3Click(Sender: TObject);
begin
if(self.alx_boo_CNPJ_Validado(self.Edit2.Text)) then begin
showmessage('O cnpj [' + self.Edit2.Text + '] está correto!');
end
else begin
showmessage('O cnpj [' + self.Edit2.Text + '] NÃO ESTÁ correto!');
end;
end;
//==============================================================================
end.
segunda-feira, 21 de maio de 2007
Rotina em DELPHI para verificar a senha de um usuário
Não se esqueça de especificar um objeto ADOConnection no ""DataModule" de sua aplicação.
Saiba que o objeto ADOQuery1 da "unit" abaixo está apontando para o objeto ADOConnection por meio de sua propriedade "Connection".
unit UntVideo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DBCtrls, Mask, XPMan, UntDataModule, DB,
ADODB;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
XPManifest1: TXPManifest;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
function alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;
function alx_boo_Senha_Ok(alx_str_user_apelido_digitado: String ; alx_str_senha_digitada: String): Boolean;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//==============================================================================
function TForm1.alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;
var
alx_str_sql_text : TStrings;
alx_boo_usuario_existe: Boolean;
alx_str_user_apelido : String;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT FUNC_APELIDO FROM FUNCIONARIOS ORDER BY FUNC_APELIDO ;');
self.ADOQuery1.Active:= False;
self.ADOQuery1.SQL.Clear();
self.ADOQuery1.SQL:= alx_str_sql_text;
self.ADOQuery1.Active:= True;
//------------
while not(self.ADOQuery1.Eof) do begin
alx_str_user_apelido:= self.ADOQuery1.Fields[0].AsString;
if (alx_str_user_apelido = alx_str_user_apelido_digitado ) then begin
alx_boo_usuario_existe:= true;
break;
end
else begin
alx_boo_usuario_existe:= false;
end;
self.ADOQuery1.Next();
end;
//------------
except
on E:Exception do begin
ShowMessage('Ôpa, ocorreu um erro ao verificar a existência de um usuário! Veja: ' + E.Message);
end;
end;
result:= alx_boo_usuario_existe;
end;
//==============================================================================
function TForm1.alx_boo_Senha_Ok(alx_str_user_apelido_digitado: String ; alx_str_senha_digitada: String): Boolean;
var
alx_str_sql_text : TStrings;
alx_boo_senha_ok : Boolean;
alx_str_user_apelido : String;
alx_str_user_senha : String;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT FUNC_APELIDO , FUNC_SENHA FROM FUNCIONARIOS ORDER BY FUNC_APELIDO ;');
self.ADOQuery1.Active:= False;
self.ADOQuery1.SQL.Clear();
self.ADOQuery1.SQL:= alx_str_sql_text;
self.ADOQuery1.Active:= True;
//------------
while not(self.ADOQuery1.Eof) do begin
alx_str_user_apelido:= self.ADOQuery1.Fields[0].AsString;
alx_str_user_senha := self.ADOQuery1.Fields[1].AsString;
if ((alx_str_user_apelido = alx_str_user_apelido_digitado) and (alx_str_user_senha = alx_str_senha_digitada) ) then begin
alx_boo_senha_ok:= true;
break;
end
else begin
alx_boo_senha_ok:= false;
end;
self.ADOQuery1.Next();
end;
//------------
except
on E:Exception do begin
ShowMessage('Ôpa, ocorreu um erro ao verificar a senha de um usuário! Veja: ' + E.Message);
end;
end;
result:= alx_boo_senha_ok;
end;
//==============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
if(self.alx_boo_Usuario_Existe(self.Edit1.Text)) then begin
self.Edit1.Color:= clBlue;
showmessage('oi, o usuário existe!');
end
else begin
self.Edit1.Color:= clRed;
showmessage('oi, o usuário NÃO existe!');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if(self.alx_boo_Senha_Ok(self.Edit1.Text , self.Edit2.Text)) then begin
self.Edit2.Color:= clGreen;
showmessage('oi, a senha do usuário [' + self.Edit1.Text + '] confere!');
end
else begin
self.Edit2.Color:= clRed;
ShowMessage('ôpa, a senha do usuário [' + self.Edit1.Text + '] NÃO confere!');
end;
end;
end.
Rotina em DELPHI para instanciar um objeto
partir do método construtor próprio da classe que controla o referido formulário.
unit Unit_ALX_Painel_Central;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Unit_ALX_Clientes;
type
TFrm_ALX_Painel_Central = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frm_ALX_Painel_Central: TFrm_ALX_Painel_Central;
implementation
{$R *.dfm}
//==============================================================================
procedure TFrm_ALX_Painel_Central.BitBtn1Click(Sender: TObject);
var
alx_frm_clientes: TFrm_ALX_Clientes;
begin
alx_frm_clientes:= TFrm_ALX_Clientes.alx_voi_Create(Application);
end;
//==============================================================================
Rotina em DELPHI para Método Construtor
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TFrm_ALX_Clientes = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure alx_voi_Tratar_Valores_Estaticos();
public
{ Public declarations }
constructor alx_voi_Create(alx_obj_owner: TComponent);
end;
var
alx_int_conta_form: Integer;
implementation
{$R *.dfm}
//==============================================================================
constructor TFrm_ALX_Clientes.alx_voi_Create(alx_obj_owner: TComponent);
begin
inherited Create(alx_obj_owner);
self.alx_voi_Tratar_Valores_Estaticos();
//... realiza as inicializações ...
self.Show);
end;
//==============================================================================
procedure TFrm_ALX_Clientes.alx_voi_Tratar_Valores_Estaticos();
begin
alx_int_conta_form := alx_int_conta_form + 1;
self.Caption:= 'Sistema ALX: Listagem de Clientes [' + inttostr(alx_int_conta_form) + ']';
end;
//==============================================================================
procedure TFrm_ALX_Clientes.FormClose(Sender: TObject; var Action: TCloseAction);
begin
self:= nil;
end;
//==============================================================================
end.
terça-feira, 15 de maio de 2007
Petrobras na Bolívia
Por que será que a Petrobras e o governo Brasileiro fecharam o negócio com o governo Boliviano por aproximadamente 120 milhões com tanta pressa?
Por que será que não levaram o para o fórum internacional as questões associadas com a exigibilidade das cláusulas do contrato?
segunda-feira, 14 de maio de 2007
Rotina em DELPHI para verificação de Login
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Mask, StdCtrls, Buttons, DB, ADODB;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
BitBtn1: TBitBtn;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
MaskEdit1: TMaskEdit;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
//----------
function alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;
function alx_boo_Senha_Confere(alx_str_user_apelido_digitado: String; alx_str_user_senha_digitada: String): Boolean;
//----------
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//==============================================================================
function TForm1.alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;
var
alx_str_sql_text : TStrings;
alx_boo_usuario_existe: Boolean;
alx_str_user_apelido: String;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT FUNC_APELIDO FROM FUNCIONARIOS ORDER BY FUNC_APELIDO ;');
self.ADOQuery1.Active:= False;
self.ADOQuery1.SQL.Clear();
self.ADOQuery1.SQL:= alx_str_sql_text;
self.ADOQuery1.Active:= True;
//------------
while not(self.ADOQuery1.Eof) do begin
alx_str_user_apelido:= self.ADOQuery1.Fields[0].AsString;
if (alx_str_user_apelido = alx_str_user_apelido_digitado ) then begin
alx_boo_usuario_existe:= true;
break;
end
else begin
alx_boo_usuario_existe:= false;
end;
self.ADOQuery1.Next();
end;
//------------
except
on E:Exception do begin
ShowMessage('Ôpa, ocorreu um erro ao verificar a existência de um usuário! VEja: ' + E.Message);
end;
end;
result:= alx_boo_usuario_existe;
end;
//==============================================================================
function TForm1.alx_boo_Senha_Confere(alx_str_user_apelido_digitado: String; alx_str_user_senha_digitada: String): Boolean;
var
alx_str_sql_text : TStrings;
alx_boo_senha_confere : Boolean;
alx_str_user_apelido : String;
alx_str_user_senha : String;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT FUNC_APELIDO, FUNC_SENHA FROM FUNCIONARIOS ORDER BY FUNC_APELIDO ;');
self.ADOQuery1.Active:= False;
self.ADOQuery1.SQL.Clear();
self.ADOQuery1.SQL:= alx_str_sql_text;
self.ADOQuery1.Active:= True;
//------------
while not(self.ADOQuery1.Eof) do begin
alx_str_user_apelido:= self.ADOQuery1.Fields[0].AsString;
alx_str_user_senha := self.ADOQuery1.Fields[1].AsString;
if ((alx_str_user_apelido = alx_str_user_apelido_digitado) and (alx_str_user_senha = alx_str_user_senha_digitada)) then begin
alx_boo_senha_confere:= true;
break;
end
else begin
alx_boo_senha_confere:= false;
end;
self.ADOQuery1.Next();
end;
//------------
except
on E:Exception do begin
ShowMessage('Ôpa, ocorreu um erro ao verificar a senha de um usuário! VEja: ' + E.Message);
end;
end;
result:= alx_boo_senha_confere;
end;
//==============================================================================
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if(self.alx_boo_Usuario_Existe(self.Edit1.Text)) then begin
self.Edit1.Color:= clAqua;
if (self.alx_boo_Senha_Confere(self.Edit1.Text , self.MaskEdit1.Text)) then begin
self.MaskEdit1.Color:= clAqua;
ShowMessage('Usuário e Senha conferem!');
end
else begin
self.MaskEdit1.Color:= clRed;
ShowMessage('Senha do usuário não confere! Tente novamente');
self.MaskEdit1.SetFocus;
end;
end
else begin
self.Edit1.Color:= clRed;
ShowMessage('Esse usuário não existe!');
self.Edit1.SetFocus;
end;
end;
end.