Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   De Clipper a Delphi (https://www.clubdelphi.com/foros/showthread.php?t=89081)

Cesargt 23-09-2015 18:23:17

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;

dec 23-09-2015 18:51:07

Hola,

Tal vez ayudaría también que dijeses de qué se trata, o sea, qué se supone que tiene que hacer la función "VERIFICADOR".

Cesargt 23-09-2015 19:21:01

La idea es que en base a la cadena que paso me genere un dígito verificador que me permita asegurar que la cadena que paso es única, con lo cual se debe obtener que puede servir par generar claves únicas, claro se que hay otras formas de hacer esto, pero puede tener mas utilidad y se puede emplear en otras cosas mas para hacer llaves únicas de registros, etc.


La franja horaria es GMT +2. Ahora son las 23:15:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi