Jump to content


Photo

Conversiones ASCII


  • Please log in to reply
4 replies to this topic

#1 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 22 November 2011 - 09:49 AM

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 posts

Posted 22 November 2011 - 12:28 PM

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

Saludos
  • 0

#3 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 22 November 2011 - 02:34 PM

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
  • 4483 posts
  • LocationVenezuela

Posted 22 November 2011 - 04:01 PM

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
  • 4111 posts
  • LocationMadrid - España

Posted 22 November 2011 - 05:34 PM

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.