2012-01-20 4 views
18

Ho un file TXT contenente circa 10.000 righe di testo. Voglio visualizzare queste linee in un TMemo. Ma non voglio distribuire quel file TXT sul mio programma. Come faccio ad integrarlo nel mio file EXE come risorsa WITHIUT usando stringtable {} perché questo richiede un identificatore per ogni riga (quindi dovrò aggiungere 10000 identificatori).Come aggiungo un file TXT una risorsa al mio file EXE?

_

ho Delphi XE

+0

stringtable può contenere un intero testo, nel fatto. – OnTheFly

+0

@ user539 ... si prega di fornire un esempio – Ampere

risposta

31

Io di solito creare un RC file (che è fondamentalmente un file di testo) per questo tipo di risorse, quindi aggiungere linea come

MyText RCDATA ..\resources\filename.txt 

per ogni file/risorsa nel file RC. Se il file RC fa parte del progetto, verrà compilato (a res) e collegato a exe. Per utilizzare la risorsa Io di solito uso TResourceStream, cioè

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

BTW se il file RC non è stato aggiunto al progetto automaticamente quando è stato creato nell'IDE quindi aggiungere linea come

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

nel file di progetto, subito dopo l'elenco uses.

+2

Si noti che le versioni moderne di Delphi ora hanno un gestore risorse integrato nell'IDE, quindi non è più necessario utilizzare i file .rc. –

+1

Potresti fornire una risposta che indichi come farlo senza i file .rc? –

+0

Vedere la risposta di Remy per un modo. Vi sono anche alcuni componenti progettati per quel lavoro, quelli che salvano i dati in DFM ... ma qual è il problema con l'uso del file RC? – ain

4

Poiché si desidera visualizzare il testo in un TMemo, è possibile copiare/incollare il testo direttamente nell'editor di proprietà TMemo.Lines in fase di progettazione. Il testo verrà incluso nella risorsa DFM di Form/Frame in fase di compilazione e caricato nello TMemo automaticamente in fase di esecuzione per l'utente.

+1

Lo so, ma questo non è quello che volevo. Il thingy TMemo era solo un esempio (e un test che la stringa di risorse è memorizzata correttamente). – Ampere