FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Traducción de rutina JAVA
Hola muchachos, estoy desarrollando una mini aplicación en Delphi
y para ellos necesito validar un codigo de destinación que sea válido en el momento de la carga. Existe una aplicación en Java que valida eso, el tema es que no manejo Java y hay cosas que no entiendo. Con lo cual posteo aquí la rutina y sin abusar de nadie me interesaría que alguien me comente más o menos los pasos realizados. Nose tampoco como depurar esa rutina en Java como para seguirla paso a paso y ver lo que va realizando. Veo que almacena en un array todos los caracteres de la cadena, pero el valor ASCII o qué? Luego acá k = j % 23 + 65 que hace ? el operador %es el resto, esto sería k = (j mod 23) + 65 ??? En fin los dejo en sus manos y espero encontrar una pronta respuesta. Desde ya muchisimas gracias por el tiempo dedicado. Abrazo! Walter Código:
public static void a(String paramString) { if ((paramString == null) || (paramString.length() != 16)) throw new b("destinacion debe tener 16 digitos"); a(paramString, "nro de a?o", paramString.substring(0, 2)); a(paramString, "nro de aduana", paramString.substring(2, 5)); a(paramString, "nro de registro", paramString.substring(9, 14)); int i; if ((i = ((localObject = paramString.toUpperCase()).indexOf("MANE") == 5) ? 1 : 0) != 0) localObject = ((String)localObject).replace("MANE", "MANI"); Object localObject = ((String)localObject).toCharArray(); int j = 0; for (int k = 0; k < 15; ++k) j += localObject[k]; k = j % 23 + 65; if (i != 0) ++k; switch (k) { case 73: k = 88; break; case 79: k = 89; break; case 81: k = 90; break; case 91: k = 65; } if (k == localObject[15]) return; throw new b("destinacion [" + paramString + "] " + "con digito verificador [" + localObject[15] + "] invalido"); } |
#2
|
|||
|
|||
Hola,
Imagino que solo tienes problemas con este bloque de codigo: Código:
int j = 0; for (int k = 0; k < 15; ++k) j += localObject[k]; k = j % 23 + 65; if (i != 0) ++k; Código:
j:=0; for k:=0 to 15 do j:=j+localObject[k]; k:=(j mod 23) + 65; if i<>0 then Inc(k); |
#3
|
|||
|
|||
Hola mcs, desde ya muchas gracias por contestar
Esta es una Destinacion valida: '10042EC01004391D' y te paso mi rutina recorro la cadena (sDest) y voy cargando en el array mediante un for porque desconozco las funciones para hacerlo mas 'comodo' Pero el primer elemento del array pone 1 y el segundo q deberia ser 0 vuelve a repetir 1 y recien continua cargando bien, con lo cual me faltaria un item (la D final) y desde el vamos que es invalida si no posee el digito verificador. Estoy viendo eso ahora, pero si me trabo mucho mas le agrego un elemento mas al array y comienzo a contar desde el segundo elemento y listo. No puedo detenerme demasiado. Saludos y muchisimas gracias!!! Código:
function TData.ValDestinacion( sDest:string; blnMSG:boolean ):boolean; var i: integer; j: integer; k: integer; aNro:array[0..15] of Char; iSuma: Integer; begin iSuma := 0; i := Pos( 'MANE', sDest ); sDest := ReplaceStr( sDest, 'MANE', 'MANI' ); if Length( sDest ) <> 16 then begin Result := false; exit; end; for i := 0 to 15 do begin aNro[i] := Chr( Ord( Copy( sDest, i, 1 )[1] ) ); end; j := 0; for k := 0 to 14 do begin j := j + Ord( aNro[k] ); end; k := ( j mod 23 ) + 65; if i <> 0 then begin k := k + 1; end; case k of 73: begin k:= 78; end; 79: begin k:= 89; end; 81: begin k:= 90; end; 91: begin k:= 65; end; end; Result := ( k = Ord( aNro[15] ) ); end; |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Rutina que ocupa el 100% del procesador | egostar | Varios | 10 | 09-08-2007 01:27:20 |
Rutina muy lenta... | KAYO | Firebird e Interbase | 10 | 04-07-2007 17:14:44 |
Rutina de digito verificador | tulio | Varios | 4 | 09-08-2006 17:43:18 |
Que tiene esta Rutina? | esimon | OOP | 5 | 04-07-2006 17:19:03 |
No sale rutina SQl ............ | Coco_jac | SQL | 2 | 30-11-2005 16:52:44 |
|