Ver Mensaje Individual
  #1  
Antiguo 23-09-2015
Cesargt Cesargt is offline
Registrado
NULL
 
Registrado: oct 2011
Posts: 6
Reputación: 0
Cesargt Va por buen camino
De Clipper a Delphi

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;

Última edición por dec fecha: 23-09-2015 a las 18:50:34. Razón: Partir cadena que rompía el ancho del foro
Responder Con Cita