PDA

Ver la Versión Completa : Al cargar recurso de texto aparecen caracteres raros


alquimista
06-08-2013, 17:59:15
Muy buenas foreros...

Uso unos archivos de texto como recursos
en el archivo *.rc
allCF RCATA ".\Cfg\AllCteFun.txt"
allCte RCDATA ".\Cfg\Ctes.txt"
allFun RCDATA ".\Cfg\Funcs.txt"

Para cargar en una stringlist uso esta función:


procedure TForm7.LoadStringListFromResource(const ResName: string;SL : TStringList);
var
RS: TResourceStream;
begin
RS := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
try
SL.LoadFromStream(RS);
finally
RS.Free;
end;
end;

Uso en el programa

TkAllcteFun := TStringList.Create;
LoadStringListFromResource('allCF',TkAllcteFun);


En un listbox asigno la stringlist
lst1.Items.Assign(TkAllctefun);
Probe también: lst1.Items:=TkAllctefun;


El archivo de recurso empieza por:
AreaTRI1#f0#p##desc:#AreaTRI1( )#help:
Lo separo para obtener solo lo que esta entre # (AreaTRI1)

y en el listbox se visualiza en el primer elemento
Í>¿AreaTRI1

Que hago mal ya que solo aparece eso en el primer elemento "Í>¿"

Es por usar RCDATA en el rc o????
Gracias de antemano.

ecfisa
06-08-2013, 20:24:29
Hola alquimista.

Seguramente los archivos de texto (AllCteFun.txt, Ctes.txt y Funcs.txt), fueron guardados en formato UTF-8. Guardándolos como ANSI tendrían que verse correctamente...

Saludos :)

alquimista
06-08-2013, 23:35:25
Gracias ecfisa..

El texto esta grabado con otro programa en delphi que usa stringlist.savetofile.
He convertido el texto a ANSI con un editor y parece que ya no sale.
Usaba en el stringlist el símbolo micro (u).
¿Es posible que al hacer el savetofile se cree en utf?

ecfisa
07-08-2013, 00:12:46
Hola alquimista.

Pareciera que no... Acabo de hacer la prueba guardando una variable TStrings con el contenido 'blabla µ blabla' a un archivo de texto, lo incluí en el archivo .res y luego se mostró sin caracteres extraños en un ListBox (pero esto usando Delphi 7).

Saludos :)

alquimista
07-08-2013, 00:19:48
Uso delphi 2007...
Pues no se por que pasa eso?

ecfisa
07-08-2013, 00:57:16
Hola alquimista.

Probá si con la función UTF8ToAnsi se muestra correcto:

...
with TStringList.Create do
try
LoadFromFile('Tu_Archivo_UTF8.txt');
ListBox1.Items.Text := UTF8ToAnsi(Text);
finally
Free;
end;
...

Lamentablemente tengo que salir ahora y no puedo probarlo

Saludos. :)

alquimista
07-08-2013, 01:19:52
ok..
Usando la función UTF8ToAnsi se soluciona...
Es curioso...
¿Utf-8 graba al principio del archivo algunos bytes de control? ??

Bueno muchas gracias..

ecfisa
07-08-2013, 16:51:34
Hola alquimista.

Aquí tenes una descripción del formato UTF-8 (http://es.wikipedia.org/wiki/UTF-8).

Saludos. :)

alquimista
09-08-2013, 19:07:56
gracias por la info.