Ir al contenido


Foto

Conversiones ASCII


  • Por favor identifícate para responder
4 respuestas en este tema

#1 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 22 noviembre 2011 - 09:49

Estoy realizando la siguiente conversion sencilla,


delphi
  1. for nIndice := 2 to 53 do
  2.   begin
  3.       arAscii[nIndice] := Integer(char(arClave[nIndice])) + n;
  4.       arClave[nIndice] := Chr(arAscii[nIndice] + 100);
  5.   end;




El asunto esta que en xp funciona de lo mejor, pero cuando migre a 7 me comienza a dar problemas con caracteres especiales, ya que me mete algunos saltos de carro y otros que no me permiten asignar la cadena completa resultante a una variable, ya probe agregandole el +100 para asegurarme que no quede entre el 0 y 32 pero aun asi no funciona, alguna idea en especial???
  • 0

#2 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 22 noviembre 2011 - 12:28

Eduarcol, ¿en qué versión de Delphi estás compilando?

Saludos
  • 0

#3 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 22 noviembre 2011 - 02:34

Yo preguntaría, ademas de lo que pregunta andres1569:
¿Que pretende realizar el código?  Quizás pueda optimizarse de otra forma.
¿De qué tipo son las variables arAscii y arClave?
¿Tiene n siempre el mismo valor?
Me da la impresión que es un problema con el unicode y aquí juega el tipo de  arAscii y arClave además del compilador, pues por defecto puede trabajar en unicode o no. 


Saludos.
  • 0

#4 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 22 noviembre 2011 - 04:01

Compilado en 2007
arAscii array of Integer;
arClave array of char
n varia entre 0 y 51

El codigo lo que hace es que toma una palabra que puede tener una longuitud maxima de 52caracteres y cada caracter individual lo convierte a su valor en ASCII sumandole un valor "n".  Luego le suma cien y el numero resultante lo convierte en caracter. Luego de esto hace varias operaciones de cambio de orden.

Es un sencillo encriptador que me ha funcionado por ya 8 años seguidos.
  • 0

#5 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 22 noviembre 2011 - 05:34

No entiendo para que te sirve arAscii, parece una variable intermedia de la que se podría prescindir, a no ser que mas adelante tenga un uso diferente...

No dispongo de 2007 así que no puedo realizar pruebas.
Si arClave toma el valor de una variable String el Unicode podría hacer de las suyas...

Por otro lado está la conversión pasando por un integer...
Realiza una depuración paso a paso y mira el valor de cada variable y elemento del array, su tamaño y lo que sucede. 

Prueba a compilarlo así:


delphi
  1. var
  2.   arAscii: array[0..51] of DWORD;
  3.   arClave: array[0..51] of char;
  4.   nIndice, n: integer;
  5. begin
  6.     for nIndice := 2 to 53 do
  7.     begin
  8.         arAscii[nIndice] := DWORD(char(arClave[nIndice])) + n;
  9.         arClave[nIndice] := Chr(arAscii[nIndice] + 100);
  10.   end;
  11. end;




Saludos.


  • 0




IP.Board spam blocked by CleanTalk.