2012-09-08 16 views
5

Używam Delphi XE Starter. Stworzyłem plik CCs.RC i dodałem ten plik do projektu. Typowa linia w moim pliku CCs.RC wygląda następująco:Czytanie listy łańcuchów z pliku zasobów

Danish1cc Text Danish1.cc 

Bezpośrednio po linii Realizacji Dodałem

{$R CCs} 

Kiedy próbuję odczytać ten plik do istniejącego stringlist, otrzymuję komunikat o błędzie [EResNotFound][1]. Oto kod Użyłem spróbować odczytać pliku:

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) 

Moim celem jest, aby umieścić w moim pliku EXE i oczywiście móc go :) Dziękuję za wszelką pomoc czytać.

Odpowiedz

9

Typ zasobu jest niezgodny. W twoim pliku * .RC używasz TEXT, podczas gdy w twoim kodzie używasz RCDATA. należy albo zmienić .RC plik * do

Danish1cc RCDATA Danish1.cc 

Albo trzeba zmienić

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

do

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

Tak, i tu jest odpowiednia dokumentacja: [Oświadczenia zasobów rozdzielczość] (http://msdn.microsoft.com/en-us/library/windows/ desktop/aa381043% 28v = vs.85% 29.aspx) –

0

Myślę, że problem jest z tej linii - {$R CCs}

Skompilowałeś plik zasobów, czy nie jest to plik o nazwie CCs.res?

jeśli tak, że linia w kodzie powinny być {$R CCs.res}

+2

W takim przypadku dostałby komunikat o błędzie kompilatora, ale uzyskał wyjątek EResNotFound w czasie wykonywania. –

+0

Masz rację, przepraszam –