2012-01-20 13 views
18

Tengo un archivo TXT que contiene unas 10,000 líneas de texto. Quiero mostrar estas líneas en un TMemo. Pero no quiero distribuir ese archivo TXT de mi programa. ¿Cómo lo integro en mi archivo EXE como recurso WITHIUT usando stringtable {} porque esto requiere un identificador para cada línea (así que tendré que agregar 10000 identificadores).¿Cómo agrego un archivo TXT a un recurso en mi archivo EXE?

_

tengo Delphi XE

+0

tabla de cadenas puede contener un texto completo, en el hecho. – OnTheFly

+0

@ user539 ... proporcione un ejemplo – Ampere

Respuesta

31

Por lo general crear un archivo RC (que es básicamente un archivo de texto) para este tipo de recursos, a continuación, añadir línea como

MyText RCDATA ..\resources\filename.txt 

para cada archivo/recurso en el archivo RC. Si el archivo RC es parte del proyecto, se compilará (al res) y se vinculará a exe. Para utilizar el recurso que suelen utilizar TResourceStream, es decir

var ResStream: TResourceStream; 
ResStream := TResourceStream.Create(hInstance, 'MyText', RT_RCDATA); 

Por cierto si el archivo RC no se agregó al proyecto de forma automática cuando lo creó en el IDE a continuación, añadir línea como

{$R 'myExtraRes.res' 'myExtraRes.RC'} 

en el archivo de proyecto, justo después de la lista uses.

+2

Tenga en cuenta que las versiones modernas de Delphi ahora tienen un Administrador de recursos integrado en el IDE, por lo que ya no necesita usar archivos .rc. –

+1

¿Podría proporcionar una respuesta que indique cómo hacerlo sin archivos .rc? –

+0

Vea la respuesta de Remy de una manera. También hay algunos componentes que están diseñados para ese trabajo, aquellos guardan los datos en DFM ... pero ¿cuál es el problema con el uso del archivo RC? – ain

4

Dado que desea mostrar el texto en un TMemo, puede copiar/pegar el texto directamente en el editor de propiedades TMemo.Lines en tiempo de diseño. El texto se incluirá en el recurso DFM de Form/Frame en el momento de la compilación y se cargará automáticamente en el TMemo en tiempo de ejecución.

+1

Lo sé, pero esto no es lo que quería. La cosa de TMemo era solo como un ejemplo (y una prueba de que la cadena de recursos se almacena correctamente). – Ampere

Cuestiones relacionadas