Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > JAVA
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-07-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 20
mcs Va por buen camino
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;
La traducción a Delphi sería:
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);
Responder Con Cita
  #2  
Antiguo 24-07-2010
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 20
waly2k1 Va por buen camino
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;
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 17:40:26.


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