Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-01-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 13
YosvanyRL Va por buen camino
Letras chinas en delphi 2010

Primero que todo mis saludos a todos los del club de delphi y disculpen mi larga ausencia. Estube terminando la escuela de enfermeriay no tenia tiempo ni de habrir la computadora. Tengo un gran problema que acabo de ver en cuanto abro mi pc por primera vez despues de tanto, para hacer algo de codigo. El problema es el siguiente, lo mas raro del mundo, al menos para mi, nunca visto. Bueno Tampoco soy un programadorsaso pero ya hago alguito
Cuando cifro un texto con una funcion para encriptar texto, porque tambien me lo hace con ASE 256, me salen letras chinas o algo asi que no me las guarda como texto en un archivo de texto. Pues cuando lo cargo para desencriptarlo no me lo reconose es algo como esto

䜹ƽȤ﻾ҍ⣉՞⮛ԿȚ֫냋ࠐ᎚ࢪ伇ळ姿୕ꅵல

sin embargo lo hago con la misma funcion en delphi 2006 el que tenia anterior y me sale como debiera ser, o algo parecido a lo que deberia ser, pienso yo y es esto:

ªH¥ðí9í GsíØL¼e%ÈŸÍ&ñÖÉ

quisiera seguir trabajando con delphi 2010 pero con estos truenos...

No se si tiene que ver con el sTEdit del AlphaControl skin component que estoy usando o es un fastasma chino, pero me tiene loco quisiera saber si eso tiene solucion sino para seguir usando el 2006

Las funciones que use son
Código Delphi [-]
function descifrar(cadena: String; Key: Integer): String;
var
i:integer;
begin
   Result:='';
   for i:=1 to Length(cadena) do
   begin
    RandSeed:= key*i+length(cadena);
    if i mod 2= 0 then
       Result:=Result+Chr((ord(cadena[i])-i) xor (KEY*i+random(512)+length(cadena)))
    else
       Result:=Result+Chr((ord(cadena[i])+randseed) xor (KEY*i*random(1024)-length(cadena)))  ;
    end;
end;
Código Delphi [-]
function cifrar(cadena: String; Key: Integer): String;
var
i:integer;
begin
   Result:='';
   for i:=1 to Length(cadena) do
   begin
    RandSeed:= key*i+length(cadena);
    if i mod 2=0 then
       Result:=Result+Chr(ord(cadena[i]) xor (key*i+random(512)+length(cadena))+i)
    else
       Result:=Result+Chr(ord(cadena[i]) xor (key*i*random(1024)-length(cadena))-randseed)  ;
    end;
end;
Por favor si alguien conose al respecto seria de mucha ayuda
Gracias y saludos a todos los que participan en esta magnifica pagina web

Última edición por nlsgarcia fecha: 07-01-2015 a las 05:24:55. Razón: Identación y Sintaxis Delphi
Responder Con Cita
  #2  
Antiguo 06-01-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #3  
Antiguo 06-01-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Seguramente tendrás que cambair "string" por "ansistring".
Es debido a que a partir de delphi 2010 (creo recordar) se usa unicode utf-8 en lugar de string "normal"
Responder Con Cita
  #4  
Antiguo 07-01-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 13
YosvanyRL Va por buen camino
Aun las letras chinas...

Gracias por responder tan rapido porque realmente lo necesito. Con relacion a las letras chinas que me salen. He cambiado la funcion para cifrar texto por la siguiente que es el Advanced Encryption Standar
Código Delphi [-]
function cifrarTexto (Str, Clave : String) : String;
var
  Src: TStringStream;
  Dst: TMemoryStream;
  Size: Integer;
  Key: TAESKey;
  ExpandedKey: TAESExpandedKey;
begin
  Result:= EmptyStr;
  Src:= TStringStream.Create(Str);
  try
    Dst:= TMemoryStream.Create;
    try
      // Preparamos la clave, lo ideal es que tenga 32 caracteres
      FillChar(Key,Sizeof(Key),#0);
      if Length(Clave) > Sizeof(Key) then
        move(PChar(Clave)^,Key,Sizeof(key))
      else
        move(PChar(Clave)^,Key,Length(Clave));
      EsExpandKey(ExpandedKey,Key);
      // Guardamos el tamaño del texto original
      Size:= Src.Size;
      Dst.WriteBuffer(Size,Sizeof(Size));
      // Ciframos el texto
      AESEncryptStreamECB(Src,Dst,ExpandedKey);
      // Lo codificamos a base64
      Result:= BinToStr(Dst.Memory,Dst.Size);
    finally
      Dst.Free;
    end;
  finally
    Src.Free;
  end;
end;
Y me siguen saliendo las letras chinas.

Cambie el siguiente codigo de la funcion
Código Delphi [-]
function cifrarTexto (Str, Clave : String) : String;
por
Código Delphi [-]
function cifrarTexto (Str, Clave : AnsiString) : AnsiString;

y ahora me sale ??????????????????????????? en vez de las letras chinas

Please, que es ese fantasma chino que me atormenta?

Última edición por nlsgarcia fecha: 07-01-2015 a las 05:19:57. Razón: Identación y Sintaxis Delphi
Responder Con Cita
  #5  
Antiguo 07-01-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
YosvanyRL,

Te sugiero revisar el Punto #9 de la Guía de estilo de los foros, los Mensajes #1 y #4 fueron corregidos por Identación y Sintaxis Delphi.

¡Gracias por tu cooperación!

Saludos,

Nelson.
Responder Con Cita
  #6  
Antiguo 07-01-2015
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.235
Poder: 20
ElKurgan Va camino a la fama
Cita:
Empezado por YosvanyRL Ver Mensaje
Cambie el siguiente codigo de la funcion
Código Delphi [-]
function cifrarTexto (Str, Clave : String) : String;
por
Código Delphi [-]
function cifrarTexto (Str, Clave : AnsiString) : AnsiString;

y ahora me sale ??????????????????????????? en vez de las letras chinas

Please, que es ese fantasma chino que me atormenta?
Es que no vale con cambiar el tipo de los parámetros de la función. Por dentro está utilizando unos objetos (que en principio no sé cuales son) que estarán esperando el tipo en el que se programaron originalmente. Me explico, ahora la función "Length" devuelve valores distintos si se trata de un string o de un ansistring, ya que los string hasta Delphi 2009 eran los de siempre, mientras que ahora el tipo string equivale al antiguo "WideString". A lo mejor tienes que hacer un "cast" en alguna otra llamada dentro de la función, según lo vayas necesitando.

Cuando tenga un momento le echo un vistazo.

otra opción es que busques los componentes actualizados a la versión que estés utilizando en este momento, que seguro que tienen corregidas estas diferencias

Nota: Casimiro, el Unicode se añadió a Delphi 2009, que fue el gran cambio de dicha versión.

Un saludo
Responder Con Cita
  #7  
Antiguo 07-01-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ElKurgan Ver Mensaje
el Unicode se añadió a Delphi 2009, que fue el gran cambio de dicha versión.
Gracias por la info, yo me quedé en el 2007
Responder Con Cita
  #8  
Antiguo 07-01-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 13
YosvanyRL Va por buen camino
Aun las letras chinas...

Gracias por la informacion. Y cuando le heches un ojito al codigo por favor hasme saber porque me gusta el delphi 2010 mas que el 2006. Me da la opcion e buscar en los componentes el componente que quiero mientras tecleeo su nombre y me ahorra tiempo. Pero si ustedes me recomiendan algo pues con gusto lo acepto. Ahhhhhh disculpen por los errores. Ya lei la guia de estilo .
Gracias por todo y no olvides hecharle un ojito al codigo...
Muchas gracias y un feliz 2015 para todos.
Responder Con Cita
Respuesta



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
Error al abrir proyecto .net de delphi 2005 en delphi 2010.. dunia_lv OOP 1 05-01-2012 18:06:04
Error al abrir proyecto .net de delphi 2005 en delphi 2010.. dunia_lv Varios 0 04-11-2011 17:57:26
cannot focus a disabled or invisible window en Delphi 7 y Delphi 2010 Neeruu Varios 1 12-02-2011 18:22:25
Google fue hackeada desde universidades chinas rgstuamigo Noticias 2 22-02-2010 09:36:26
Pantallazo azul en las olimpiadas chinas Ñuño Martínez La Taberna 6 12-02-2009 17:04:35


La franja horaria es GMT +2. Ahora son las 16:33:49.


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