2012-01-20 44 views
18

Tôi có tệp TXT chứa khoảng 10.000 dòng văn bản. Tôi muốn hiển thị những dòng này trong một TMemo. Nhưng tôi không muốn phân phối tệp TXT đó cho chương trình của mình. Làm cách nào để tích hợp nó vào tệp EXE của tôi dưới dạng tài nguyên WITHIUT sử dụng stringtable {} vì điều này yêu cầu mã định danh cho mỗi dòng (vì vậy tôi sẽ phải thêm 10000 số nhận dạng).Làm cách nào để thêm tệp TXT vào tài nguyên vào tệp EXE của tôi?

_

Tôi có Delphi XE

+0

chuỗi có thể chứa toàn bộ văn bản, trên thực tế. – OnTheFly

+0

@ user539 ... vui lòng cung cấp ví dụ – Ampere

Trả lời

31

Tôi thường tạo ra một tập tin RC (mà về cơ bản là một tập tin văn bản) cho các loại hình tài nguyên, sau đó thêm dòng như

MyText RCDATA ..\resources\filename.txt 

cho mỗi tệp/tài nguyên vào tệp RC. Nếu tệp RC là một phần của dự án, nó sẽ được biên dịch (thành res) và được liên kết với exe. Để sử dụng tài nguyên Tôi thường sử dụng TResourceStream, tức là

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

BTW nếu file RC được không được thêm vào dự án tự động khi bạn tạo ra nó trong IDE sau đó thêm dòng như

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

vào tệp dự án, ngay sau danh sách uses.

+2

Lưu ý rằng các phiên bản Delphi hiện đại có Trình quản lý tài nguyên tích hợp trong IDE nên bạn không cần sử dụng tệp .rc càng nhiều nữa. –

+1

Bạn có thể cung cấp câu trả lời cho biết cách thực hiện mà không có tệp .rc? –

+0

Xem câu trả lời của Remy cho một chiều. Ngoài ra còn có một số thành phần được thiết kế cho công việc đó, những người lưu dữ liệu vào DFM ... nhưng vấn đề với việc sử dụng tập tin RC là gì? – ain

4

Vì bạn muốn hiển thị văn bản trong một TMemo, bạn chỉ có thể sao chép/dán văn bản trực tiếp vào trình chỉnh sửa thuộc tính TMemo.Lines tại thời điểm thiết kế. Văn bản sẽ được bao gồm trong tài nguyên DFM của Mẫu/Khung sở hữu tại thời gian biên dịch và được tải vào tự động TMemo vào thời gian chạy cho bạn.

+1

Tôi biết, nhưng đây không phải là những gì tôi muốn. Các thingem TMemo chỉ là một ví dụ (và một thử nghiệm mà chuỗi tài nguyên được lưu trữ một cách chính xác). – Ampere

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