Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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 08-05-2012
Avatar de weke
weke weke is offline
Miembro
 
Registrado: May 2004
Ubicación: Valencia
Posts: 170
Poder: 15
weke Va por buen camino
Question "Stream read error" al descodificar

Buenas tardes,
he migrado una aplicación de Delphi 7 a Delphi 2010 y me he encontrado con un problema en una función para descodificar la contraseña de acceso a la configuración de la aplicación.
Hasta ahora la aplicación estaba funcionando correctamente pero al hacer la migración me devuelve error en la línea "Src.ReadBuffer(Size,Sizeof(Size));".

A continuación pongo el código fuente de la función a ver si es que se me está pasando algo.

Código Delphi [-]
function Descifrar(Str,Clave: AnsiString): AnsiString;
var
  Src: TMemoryStream;
  Dst: TStringStream;
  Size: Integer;
  Key: TAESKey;
  ExpandedKey: TAESExpandedKey;
begin
  Result:= ''; //Result:= EmptyStr;
  Src:= TMemoryStream.Create;
  try
    Dst:= TStringStream.Create(Str);
    try
      StrToStream(Str,Src);
      Src.Position:= 0;
      FillChar(Key,Sizeof(Key),#0);
      if Length(Clave) > Sizeof(Key) then
          move(PChar(Clave)^,Key,Sizeof(key))
      else
          move(PChar(Clave)^,Key,Length(Clave));
      AESExpandKey(ExpandedKey,Key);
      // Leemos el tamaño del texto
      Src.ReadBuffer(Size,Sizeof(Size));
      AESDecryptStreamECB(Src,Dst,ExpandedKey);
      Dst.Size:= Size;
      Result:= Dst.DataString;
    finally
      Dst.Free;
    end;
  finally
    Src.Free;
  end;
end;

Muchas gracias de antemano y un saludo.
__________________
De lo bueno lo mejor, de lo mejor lo superior.
Responder Con Cita
  #2  
Antiguo 09-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.063
Poder: 29
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola weke.

En algún lado que no recuerdo, había leido que a partir de Delphi 2009 el tipo char tiene un tamaño de 2 bytes siendo que en Delphi 7 es de uno, quizá el problema pase por ahí... Lamentablemente no tengo forma de hacer ninguna prueba ya que sólo dispongo de Delphi 7.

Encontré este artículo que tal vez pueda interesarte:
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 23-05-2012
Avatar de weke
weke weke is offline
Miembro
 
Registrado: May 2004
Ubicación: Valencia
Posts: 170
Poder: 15
weke Va por buen camino
Muchas gracias ecfisa,
algo parecido me pasó cando migré una dll también de delphi7 a delphi 2010, estoy revisando todo el tema de string y ansistring a ver si consigo solucionarlo.

Si consigo solucionarlo pondré el código por si alguien tiene que hacer alguna migración del mismo estilo.

Un saludo.
__________________
De lo bueno lo mejor, de lo mejor lo superior.
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
Extraño error "Stream Read Error" Spk2000ar Varios 0 01-10-2011 01:29:27
Al intentar modificar un campo me dice "Cannot modify a read-only dataset" raulahol SQL 1 22-01-2007 05:16:53
como se puede solucionar "Stream read error"? JuanErasmo Firebird e Interbase 0 08-08-2006 15:40:25
error "table is read only" Supermagayin Conexión con bases de datos 6 10-04-2005 22:39:17
Optener un Stream como "Result" en una funcion sitrico Varios 3 24-11-2004 22:06:38


La franja horaria es GMT +2. Ahora son las 23:04:02.


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