2012-09-08 35 views
5

Tôi đang sử dụng Delphi XE Starter. Tôi đã tạo một tệp CCs.RC và đã thêm tệp đó vào dự án. Một dòng đặc trưng trong file CCs.RC của tôi trông như thế này:Đọc danh sách chuỗi từ tệp tài nguyên

Danish1cc Text Danish1.cc 

Ngay sau khi một dòng thực hiện tôi đã thêm

{$R CCs} 

Khi tôi cố gắng đọc tập tin này vào một stringlist hiện, tôi nhận được một thông báo lỗi [EResNotFound][1]. Đây là mã tôi đã sử dụng để thử và đọc tệp:

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) 

Mục tiêu của tôi là nhúng tệp vào EXE và tất nhiên là có thể đọc được :) Cảm ơn bạn đã được trợ giúp.

Trả lời

9

Loại tài nguyên của bạn không khớp. Trong tệp * .RC bạn sử dụng TEXT trong khi trong mã của bạn, bạn sử dụng RCDATA. Bạn phải hoặc là thay đổi tập tin * rc của bạn để

Danish1cc RCDATA Danish1.cc 

Hoặc bạn phải thay đổi

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

để

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

Vâng, và đây là tài liệu liên quan: [Resource-Definition Báo cáo] (http://msdn.microsoft.com/en-us/library/windows/ máy tính để bàn/aa381043% 28v = vs.85% 29.aspx) –

0

Tôi nghĩ rằng vấn đề là với dòng này - {$R CCs}

Bạn đã biên soạn một tệp tài nguyên, không phải là tệp có tên CCs.res?

nếu để dòng trong mã của bạn nên được {$R CCs.res}

+2

Trong trường hợp đó, anh ta sẽ nhận được thông báo lỗi trình biên dịch, nhưng anh ta nhận được một ngoại lệ EResNotFound khi chạy. –

+0

Bạn đúng, xin lỗi –

Các vấn đề liên quan