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
intente hacer esto en delphi asi pero la ultima linea no ha podido resolver,
y ademas no se si estabien.
me gustaria que alguien me ayude por favor
gracias de ante mano
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;
gracias de ante mano
Valora esta pregunta
0