Hola a todos.
Es la primera vez que uso el foro, así que si pongo algo mal díganme para corregir el problema. Vamos al punto, tengo un problema con este programita hecho en Clipper para pasarlo a Delphi.
Este es el código en Clipper 5.2
Código:
FUNCTION VERIFICADOR(recibecadena)
nTotal = 0
nDigito = 0
aCaracter = {"0","1","2","3","4","5","6","7","8","9",;
"A","B","C","D","E","F","G","H","I","J",;
"K","L","M","N","¥","O","P","Q","R","S",;
"T","U","V","W","X","Y","Z"}
aValor = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,;
17,18,19,20,21,22,23,24,25,26,27,28,29,30,;
31,32,33,34,35,36}
FOR nInd = 1 TO 17
nTotal = nTotal + aValor[ASCAN(aCaracter,SUBS(cCurp17,nInd,1))] * (19-nInd)
NEXT
nDigito=INT(10-nTotal%10)
RETURN STR(IIF(nDigito=10,0,nDigito),1)
Esto es lo que llevo del código Delphi, pero requiero que me auxilien en indicarme si esta bien o en donde esta mal, sospecho que algo es mal, pero no se que es.
Código Delphi
[-]
Procedure Form1.Button1Click(Sender: TObject);
var
Aux3 : integer;
strA:String;
aNumero:array[1..10] of string[1];
aLetra:array[1..26] of String[1];
aValor: ARRAY[1..37] OF integer;
xContador,xNTotal,xNDigito:Integer;
aCaracter: TArray<string>;
FoundIndex : Integer;
Begin
aCaracter:=TArray<string>.Create('0','1','2','3','4','5','6','7','8','9','A','B','C',
'D','E','F','G','H','I','J','K','L','M','N','Ñ','O','P','Q','R','S','T','U','V','W','X','Y','Z');
aValor[1]:= 0;
aValor[2]:= 1;
aValor[3]:= 2;
aValor[4]:= 3;
aValor[5]:= 4;
aValor[6]:= 5;
aValor[7]:= 6;
aValor[8]:= 7;
aValor[9]:= 8;
aValor[10]:= 9;
aValor[11]:= 10;
aValor[12]:= 11;
aValor[13]:= 12;
aValor[14]:= 13;
aValor[15]:= 14;
aValor[16]:= 15;
aValor[17]:= 16;
aValor[18]:= 17;
aValor[19]:= 18;
aValor[20]:= 19;
aValor[21]:= 20;
aValor[22]:= 21;
aValor[23]:= 22;
aValor[24]:= 23;
aValor[25]:= 24;
aValor[26]:= 25;
aValor[27]:= 26;
aValor[28]:= 27;
aValor[29]:= 28;
aValor[30]:= 29;
aValor[31]:= 30;
aValor[32]:= 31;
aValor[33]:= 32;
aValor[34]:= 33;
aValor[35]:= 34;
aValor[36]:= 35;
aValor[37]:= 36;
strA:='LRE5645HJGD4E04';
xNTotal:=0;
for xContador := 1 to 17 do
Begin
if TArray.BinarySearch<String>(aCaracter,strA.SubString(xContador,1),FoundIndex, TStringComparer.Ordinal) then
Begin
xNTotal:=xNTotal+aValor[FoundIndex+1]+(19-xContador);
End;
End;
Aux3:=Trunc((10-xNTotal)/10);
xNDigito:=Aux3;
if xNDigito=10 then
xNDigito:=0
Else
xNDigito:=xNDigito;
Label1.Caption:=IntToStr(xNDigito);
End;