 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mar 23 Sep, 2014 12:41 pm Asunto: Traducir de Delphi a Builder |
|
|
Hola amigos,
Alguien me podría traducir esta función? es para validar un NIF de Portugal, pero no me termina de salir bien.
function ValidaNIF(NIF:String):Boolean;
var
i:byte;
Control:Integer;
begin
// Testa o tamanho do NIF (Obrigatório 9 digitos)
Result:=Length(NIF)=9;
// Testa o NIF por tipo de caracteres (apenas númerico é aceite)
try
Control:=StrToInt(NIF);
except
Result:=False;
end;
// Testa se o digito inicial é válido (1, 2, 5, 6, 7, 8 ou 9)
Result:=Result AND (Pos(NIF[1],'1256789')>0);
// Calcula o CheckDigit do número e valida-o contra o último algarismo (algarismo de controle) pelo método Módulo 11
if Result
then begin
Control:=StrToInt(NIF[1])*9;
for i:=2 to 8 do
Control:=Control+(10-i)*StrToInt(NIF[i]);
Control:=11-(Control Mod 11);
if Control>=10 then Control:=0;
Result:=Control = StrToInt(NIF[9]);
end;
end; _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 23 Sep, 2014 2:37 pm Asunto: |
|
|
Lo mas literal posible:
| Código: | bool ValidaNIF(String NIF)
{
BYTE i;
int Control;
bool Result;
// Testa o tamanho do NIF (Obrigatório 9 digitos)
Result = (NIF.Length() == 9);
// Testa o NIF por tipo de caracteres (apenas númerico é aceite)
try {
Control = StrToInt(NIF);
} catch(...) {
Result = false;
}
// Testa se o digito inicial é válido (1, 2, 5, 6, 7, 8 ou 9)
Result = Result && (String("1256789").Pos(NIF[1]) > 0);
// Calcula o CheckDigit do número e valida-o contra o último algarismo (algarismo de controle) pelo método Módulo 11
if (Result) {
Control = StrToInt(NIF[1]) * 9;
for (i = 2; i <= 8; ++i)
Control = Control + (10 - i) * StrToInt(NIF[i]);
Control = 11 - (Control % 11);
if (Control >= 10) Control = 0;
Result = (Control == StrToInt(NIF[9]));
}
return Result;
} |
|
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mar 23 Sep, 2014 3:18 pm Asunto: |
|
|
Leo,
Estupendo, muchas gracias, es que con Delphi me lío.
Un abrazo.
Carlos _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|