Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Acentos al cargar un Listbox (https://www.clubdelphi.com/foros/showthread.php?t=90257)

mblascog 05-05-2016 00:39:46

Acentos al cargar un Listbox
 
Buenas, las letras con acentos, eñes, aparecen como carácteres especiales en un listbox. Existe alguna función a aplicar a la cadena antes de asignarla al listbox?

Gracias.

AgustinOrtu 05-05-2016 03:19:01

Que versión de Delphi?

mblascog 05-05-2016 08:20:59

Delphi 7, perdón por no haberlo dicho.
Gracias

ecfisa 05-05-2016 14:15:43

Hola mblascog.

Tal vez estes cargando la propiedad Items desde un archivo de texto con formato UTF8 mediante el método LoadFromFile. Si fuera ese el caso, inténtalo al modo de este ejemplo:
Código Delphi [-]
function UTF8FileToString(const aFileName: string): string;
var
  Stream : TFileStream;
begin
  Stream := TFileStream.Create(aFileName, fmOpenRead);
  try
    SetLength(Result, Stream.Size div SizeOf(Char));
    Stream.ReadBuffer(Result[1], Stream.Size);
    Result := Copy(UTF8ToAnsi(Result), 2, MaxInt));
  finally
    Stream.Free;
  end;
end;

procedure TForm1.btnLoadClick(Sender: TObject);
begin
  ListBox1.Items.LoadFromFile('utf-8_file.txt');
  ListBox2.Items.Text := UTF8FileToString('utf-8_file.txt');
end;

Muestra:


Saludos :)

mblascog 05-05-2016 19:09:25

Gracias por tu respuesta. En realidad estoy cargando un Listbox a partir de los directorios que me devuelve el componente idFTP.List
Lo pruebo y te digo

AgustinOrtu 05-05-2016 19:30:26

Hay que tener en cuenta que Delphi 7 no es "Unicode por defecto"

mblascog 05-05-2016 20:05:49

Muchas gracias por la información

ecfisa 05-05-2016 23:13:24

Hola mblascog.
Cita:

Empezado por mblascog (Mensaje 504970)
Gracias por tu respuesta. En realidad estoy cargando un Listbox a partir de los directorios que me devuelve el componente idFTP.List
Lo pruebo y te digo

En ese caso creo que bastaría con que uses directamente la función UTF8ToAnsi para la prueba, vg.:
Código Delphi [-]
...
  ListBox1.Items.Add(Copy(UTF8ToAnsi(idFTP1.DirectoryListing[i].FileName),2, MaxInt));
...

Saludos :)

mblascog 05-05-2016 23:54:09

Sí, ha ido perfecto. Muchas gracias


La franja horaria es GMT +2. Ahora son las 00:51:40.

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