Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Comprobar la validez de un CIF - Delphi
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

Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A