Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Problemas con idMimeEncode y idMimeDecode (https://www.clubdelphi.com/foros/showthread.php?t=69152)

fide_uci 29-07-2010 14:42:26

Problemas con idMimeEncode y idMimeDecode
 
Buenas amigos. Mi problema es el siguiente y quiciera que si fuera posible me ayudaran a resolverlo.

Tengo esta cadena de texto.

Código:

Fidel Hernández Salazar
El problema es que cuando ejecuto este codigo.

Código Delphi [-]
   Edit2.Text := EncoderMIME.EncodeString(Edit1.Text);
   //Seguidamente lo decodifico
   Edit1.Text := DecoderMIME.DecodeString(Edit2.Text);

En ves de devolverme la cadena correctamente, o sea

Código:

Fidel Hernández Salazar
Me retorna:
Código:

Fidel Hernandez Salazar
sin tilde. Haciengo algunas pruebas me di cuenta que cuando codifico un String y luego lo decodifico, las tildes, las "ñ" y otros caracteres se pierden, o sea a las letras que tienen tildes se les quita, y a la "ñ" tambien se le quita la tilde. Estoy utilizando Indy10 y Delphi 7. Alguien sabe a que se deba este problema ???

Probando con PHP me di cuenta que si devuelve el resultado esperado, pero no se por que con delphi me sucede esto. Aqui pongo el codigo PHP que utilizo.

Código:

<?php

        $texto = "Fidel Hernández Salazar";
        $codificado = base64_encode($texto);
        $decodificado = base64_decode($codificado);
        echo "Codificado: " . $codificado . "<br/>";
        echo "Decodificado: " . $decodificado."<br/>";
       
?>


yapt 01-08-2010 11:56:55

Hay problemas conocidos con algunas versiones de las Indy. Si estás utilizando Indy 10, procura actualizar a la última versión. Este problema se arregló hace poco más de un mes o mes y medio.

Que versión de Indy estás manejando ? Que versión de Delphi ?

En cualquier caso, prueba esto a ver si hay suerte (probado con Delphi 2010):

Código Delphi [-]
uses EncdDecd;

Código Delphi [-]
function EncodeBase64(const Value: string):string;
var
  fstream, fStringStream: TStringStream;
begin
  fstream       := TStringStream.Create(Value);
  try
    fStringStream := TStringStream.create('');
    try
      EncodeStream(fstream, fStringStream);
      result        := fStringStream.DataString;
      //--
    finally
      FreeAndNil(fStringStream);
    end;
  finally
    FreeAndNil(fStream);
  end;
end;

function DecodeBase64(const Value: string):string;
var
  fstream, fStringStream: TStringStream;
begin
  fstream       := TStringStream.Create(Value);
  try
    fStringStream := TStringStream.create('');
    try
      DecodeStream(fStream, fStringStream);
      result        := fStringStream.DataString;
      //---
    finally
      FreeAndNil(fStringStream);
    end;
  finally
    FreeAndNil(fStream);
  end;
end;


El uso sería el siguiente:

Código Delphi [-]
Edit2.Text := EncodeBase64(Edit1.Text);
Edit1.Text := DecodeBase64(Edit2.Text);

fide_uci 03-08-2010 16:24:13

Bueno antes que nada gracias por responder a mi pregunta. Estoy utilizando Delphi 7 y la version de Indy es la 10.5.7. Voy a actualizar a ver que sucede. Despues te cuento.

fide_uci 03-08-2010 16:44:29

Por lo que veo la version de Indy que hay es la 10.5.7. Que es la misma que tengo instalada en mi delphi.
http://indy.fulgan.com/ZIP/IndyTiburon.zip

Código Delphi [-]
  gsIdVersion = '10.5.7'; {do not localize}
  gsIdProductName = 'Indy';  {do not localize}

yapt 03-08-2010 23:04:41

Perdona Fide, hablaba de la última versión en su SVN. Es decir, la versión de desarrollo.

En cualquier caso, has probado si el ejemplo que te he dado funciona en Delphi 7 ?

Eliminarías la dependencia de las Indy.

yapt 03-08-2010 23:18:49

Mira esto, quizá te da una pista:

http://atozedsoftware.newsgroups.arc...004106636.html

Un extracto.
Cita:

In tonight's snapshot, DecodeString() now has new TIdTextEncoding parameter,
ie:
Es por esto que te decía lo de la actualización. Aunque lo he intentado ahora y pide usuario/contraseña. :(

Saludos.


La franja horaria es GMT +2. Ahora son las 20:56:25.

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