2012-09-08 5 views
5

Estoy usando Delphi XE Starter. Creé un archivo CCs.RC y agregué ese archivo al proyecto. Una línea típica en mi archivo CCs.RC se ve así:Lectura de una lista de cadenas de un archivo de recursos

Danish1cc Text Danish1.cc 

Directamente después de una línea de Implementación He añadido

{$R CCs} 

Cuando trato de leer este archivo en un StringList existente, lo entiendo un mensaje de error [EResNotFound][1]. Aquí está el código que he usado para tratar de leer el archivo:

procedure 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; 
/// 
LoadStringListFromResource('Danish1cc',MySL) 

Mi meta es la de insertar el archivo en mi EXE y, por supuesto, ser capaz de leerlo :) Gracias por cualquier ayuda.

Respuesta

9

El tipo de recurso no coincide. En su archivo * .RC usted usa TEXT mientras que en su código usa RCDATA. debe escoger para su archivo .RC * a

Danish1cc RCDATA Danish1.cc 

O debe cambiar

RS := TResourceStream.Create(HInstance, ResName, RT_RCDATA); 

a

RS := TResourceStream.Create(HInstance, ResName, 'Text'); 
+3

Sí, y aquí está la documentación pertinente: [Declaraciones de Recursos-Definición] (http://msdn.microsoft.com/en-us/library/windows/ desktop/aa381043% 28v = vs.85% 29.aspx) –

0

Creo que el problema es con esta línea - {$R CCs}

Ha compilado un archivo de recursos, ¿no es ese archivo llamado CCs.res?

si es así que la línea en su código debe ser {$R CCs.res}

+2

En ese caso, obtendría un mensaje de error del compilador, pero recibe una excepción EResNotFound en tiempo de ejecución. –

+0

Tiene razón, disculpas –

Cuestiones relacionadas