Delphi - Base 11 - pasar función de Java a Delphi

 
Vista:

Base 11 - pasar función de Java a Delphi

Publicado por David (3 intervenciones) el 31/12/2018 23:45:36
Muy buenas amigos del foro
este codigo creo que esta hecho en java yo no se manejar java

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
public String calculaDigitoMod11(String dado, int numDig, int limMult, boolean x10)
{
int mult, soma, i, n, dig;
if (!x10) numDig = 1;
for(n = 1; n <= numDig; n++) {
soma = 0;
mult = 2;
for(i = dado.length() - 1; i >= 0; i--) {
soma += (mult * Integer.parseInt(dado.
substring(i, i + 1)));
if(++mult > limMult) mult = 2;
}
if (x10) {
dig = ((soma * 10) % 11) % 10;
}
else {
dig = soma % 11;
}
if (x10) {
dig = ((soma * 10) % 11) % 10;
}
else {
dig = soma % 11;
}
if (dig == 10) {
dado += “1”;
}
if (dig == 11) {
dado += “0”;
}
if (dig < 10) {
dado += String.valueOf(dig);
}
}
return dado.substring(dado.length() - numDig, dado.length());
}

intente hacer esto en delphi asi pero la ultima linea no ha podido resolver,
y ademas no se si estabien.

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
37
function TForm1.calculaDigitoMod11( dado : String;  numDig : integer; limMult : integer;  x10 : boolean): Integer;
var
  mult, soma, i, n, dig : integer;
begin
   if (x10) then
   numDig := 1;
      for n := 1 to numDig do
      begin
         soma := 0;
         mult := 2;
         for i := length(dado) - 1 to 0 do
         begin
             soma :=soma + mult * StrToInt(dado[i + 1]);
             if mult > limMult Then
                mult := 2;
         end;
         if (x10) then
             dig := ((soma * 10) mod 11) mod 10
         else
             dig := soma mod 11;
 
         if (x10) then
             dig := ((soma * 10) mod 11) mod 10
         else
             dig := soma mod 11;
 
         if (dig = 10) then
             dado := dado + '1';
         if (dig = 11)  then
             dado := dado + '0';
         if (dig < 10) then
         begin
           dado :=dado + IntToStr(dig);
         end;
     end;
     Result:= StrToInt(dado[length(dado)]) - numDig[length(dado)];
end;
me gustaria que alguien me ayude por favor
gracias de ante mano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Base 11 - pasar función de Java a Delphi

Publicado por David (3 intervenciones) el 02/01/2019 20:42:44
Uff, 54 vistos y no tengo respuesta
realmente esta difisil...???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Base 11 - pasar función de Java a Delphi

Publicado por David (3 intervenciones) el 02/01/2019 22:31:22
uff me costo mucho pero ya quedo bien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Base 11 - pasar función de Java a Delphi

Publicado por Carlos (1 intervención) el 01/02/2019 20:30:43
Como lo resolviste?

La función es invertir los números y aplicar multiplicaciones del 2 al 9, cada valor, a eso sumar todos los valores y dividir entre 11, el residuo es el dígito verificador

Si puedes mostrar tu resolución
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar