PDA

Ver la Versión Completa : Acentos al cargar un Listbox


mblascog
05-05-2016, 00:39:46
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:

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:
http://s32.postimg.org/ybejf5io5/mblascog.png

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.
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.:

...
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