Lenguaje de programación Borland Delphi
El primer dígito del CIF es una letra que indica el tipo de la organización y puede ser:
A - Sociedad Anónima.
B - Sociedad de responsabilidad limitada.
C - Sociedad colectiva.
D - Sociedad comanditaria.
E - Comunidad de bienes.
F - Sociedad cooperativa.
G - Asociación.
H - Comunidad de propietarios.
K - Formato antiguo.
L - Formato antiguo.
M - Formato antiguo.
N - Formato antiguo.
P - Corporación local.
Q - Organismo autónomo.
S - Organo de la administración.
Los siete dígitos siguientes son números y el último es el dígito de control que puede ser un número ó una letra.
Este programa comprueba si el CIF introducido es correcto, para ello necesitaremos un formulario, un cuadro de texto (TEdit) con el nombre "txtCIF", un botón (TButton) con el nombre "bComprobarCIF", el código fuente completo:
unit UnidadMenuPrincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TformMenuPrincipal = class(TForm)
bComprobarCIF: TButton;
txtCIF: TEdit;
Label1: TLabel;
procedure bComprobarCIFClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
formMenuPrincipal: TformMenuPrincipal;
implementation
{$R *.dfm}
//Comprueba si un CIF es correcto (se le pasa el CIF completo, incluida la letra)
function ValidarCIF (Cif : string) : boolean;
var
Suma, Control : integer;
n : byte;
begin
Result:=False;
Cif:=UpperCase(Cif);
{El cif debe ser de 9 cifras}
if Length(Cif)=9 then
begin
Suma:= StrToInt(Cif[3])+
StrToInt(Cif[5])+
StrToInt(Cif[7]);
for n := 1 to 4 do
begin
Suma:=Suma+ ( (2*StrToInt(Cif[2*n])) mod 10 )+
( (2*StrToInt(Cif[2*n])) div 10 );
end;
Control := 10-(Suma mod 10);
if Pos(Cif[1],'XP') <> 0 then
{Control tipo letra}
Result:= ( Cif[9] = Chr(64+ Control))
else
begin
{Control tipo número}
if Control =10 then
Control := 0;
Result:= ( StrToInt(Cif[9]) = Control);
end;
end;
end;
procedure TformMenuPrincipal.bComprobarCIFClick(Sender: TObject);
begin
if ValidarCIF(txtCIF.Text) then
MessageDlg('El CIF es correcto.', mtInformation, [mbok], 0)
else
MessageDlg('El CIF es incorrecto.', mtError, [mbok], 0);
end;
end.
Publicado el: 2004-05-23