2009-08-19 36 views
15

Tôi nhớ đọc một bài báo hoặc đăng bài ở đâu đó cách đây vài năm đề xuất bao gồm tệp tài nguyên trong dự án bằng cách tham chiếu tệp .rc thay vì đã biên dịch .res tệp để tài nguyên được xây dựng như là một phần của quá trình xây dựng của dự án.Bao gồm tệp tài nguyên trong dự án bằng tệp .RC chứ không phải tệp .RES

Tôi có tệp glyphs.rc mà tôi hiện đang biên dịch bằng lệnh brcc32 glyphs.rc. Trong tệp dự án của tôi, tôi có tuyên bố {$ R Glyphs.res}.

Tôi muốn đơn giản hóa này bằng cách thay đổi nó để cái gì đó như

{$R Glyphs.rc} 

nhưng không chắc chắn về cú pháp. Khi tôi thử sử dụng {$R Glyphs.rc} Tôi gặp lỗi '

[DCC Error] E2161 Error: RLINK32: Unsupported 16bit resource in file "Glyphs.rc". 

Phương pháp này có thể thực hiện với Delphi 2007 không?

Trả lời

23

Chỉ cần thêm tệp rc vào dự án của bạn thông qua mục menu "Dự án> Thêm vào dự án". Điều này tạo ra dòng {$R 'myres.res' 'myres.rc'} từ bài đăng TOndrej links to.

6

Các mối liên kết chỉ có thể xử lý res tác phẩm, nhưng bạn có thể chỉ đạo việc biên dịch để gọi trình biên dịch tài nguyên và biên dịch một rc kịch bản để sản xuất một res tập tin và liên kết đó, sử dụng một biến thể của $ R/$ RESOURCE chỉ thị.

Trong trường hợp của bạn (Delphi 2007) bạn nên chỉ cần thay đổi:

{$r glyphs.res} 

để

{$r glyphs.res glyphs.rc} 

Nếu điều này không làm việc trên riêng của mình, hãy thử thêm RC cho dự án. Trong các phiên bản khác nhau của Delphi bạn có thể cần dấu nháy đơn xung quanh tên tập tin:

{$r 'glyphs.res' 'glyphs.rc'} 

LƯU Ý: Bạn làm vẫn cần phải xác định một res tập tin, sự khác biệt là trong việc có thể để xác định thêm các rc tệp sẽ được biên soạn để tạo ra các yêu cầu res tệp ở nơi đầu tiên.

Hỗ trợ cho điều này có vẻ như đã bị một số tinkering và trong các phiên bản gần đây thêm RC vào dự án không phải lúc nào cũng được "phát hiện" bởi dự án cho đến sau khi bạn đã lưu, đóng và mở lại dự án (ví dụ như tôi thấy đây là trường hợp trong XE4 nhưng cũng có thể áp dụng cho các phiên bản khác). Ngoài ra, trong một số phiên bản gần đây, chỉ cần thêm tuyên bố $R 'file.res' 'file.rc' như vậy vào DPR khiến Trình quản lý dự án xác định tệp RC được tham chiếu là một phần của dự án, nhưng điều này dường như không xảy ra trong các phiên bản cũ hơn. Một lần nữa, một phần của mày mò trong khu vực này có vẻ như.Tôi cũng lưu ý rằng XE4 thường là đá vững chắc về tính ổn định, nhưng việc thêm/xóa các tệp RC dường như kích hoạt vi phạm truy cập khi đóng IDE, mặc dù độ ổn định bình thường dường như được khôi phục khi mở lại IDE và dự án. nghĩa là nó thêm/xóa các tệp RC có vẻ gây ra sự cố, không chỉ đơn giản là có tệp RC trong dự án.

+0

Jolyon, tôi tin rằng điều này đã ngừng hoạt động một số phiên bản trước đây (có lẽ với việc chuyển sang MSBuild?). Nó không hoạt động nữa trong bản sao của Delphi XE2 trong mọi trường hợp. –

+0

Tò mò - nó vẫn có vẻ hoạt động tốt trong XE2 của tôi. – Deltics

+0

Chỉ thay đổi chỉ thị $ R không hoạt động trong XE2. Tệp .rc phải được thêm vào dự án với Project | Add to Project. –

2

Tôi đã gặp vấn đề tương tự và phát hiện ra điều gì đó mới mẻ.

{$R glyphs.res glyphs.rc} 

đây là mã để biên dịch glyphs.rc thành glyphs.res trong bản dựng trước. (Hoạt động với Delphi XE4)

Nhưng mã này CHỈ hoạt động nếu nó ở trong tệp * .dpr! Nếu bạn đặt mã này, trong tệp * .pas như tôi đã làm lần đầu tiên, nó sẽ chỉ hoạt động như {$ R glyphs.res} và sẽ không biên dịch tệp RC. Có lẽ đây là một lỗi trong Delphi.

+0

AFAIR nó cũng không hoạt động trong dpk (gói). Nó sẽ được tốt đẹp nếu trình biên dịch ít nhất là cảnh báo về điều này. –

0

tôi không thể thoát khỏi từ mainicon trong ứng dụng của tôi, vì vậy tôi đã thực hiện một tập tin trapgate.rc đặt rằng tập tin trong thư mục src, sử dụng:

MAINICON icon ".\Icon\MAINICON.ico" 
5012 icon ".\Icon\5012.ico" 

Sau đó, sử dụng BRCC32 để làm từ RC một RES tập tin, đã xây dựng và tôi đã có biểu tượng chính xác. bạn cũng có thể đặt nhiều biểu tượng trong đó và chuyển thats tại sao tôi đã thêm dòng trong makeres.bat trông như thế này:

brcc32 folders.rc -fofolders.res 
brcc32 main.rc -fomain.res 
brcc32 xOutline.rc -foxOutline.res 
brcc32 xSpin.rc -foxSpin.res 
brcc32 credits.rc -focredits.res 
brcc32 licence.rc -folicence.res 
brcc32 trapgate.rc -fotrapgate.res <-- this is my icon file 

Vì vậy, bất cứ điều gì bạn làm ngay cả khi bạn thay đổi biểu tượng trong thư mục .. \ biểu tượng tất nhiên hãy chắc chắn rằng nó có tên chính xác như mainicon.ico và 5012.ico

Hy vọng điều đó đã giúp ích cho những ai không thể thay đổi biểu tượng trong chính Delphi 7.

0

Tôi đã cố gắng làm điều này trong Delphi 2007 và nó không hoạt động. Tôi đã đưa dòng,

"{$ R glyphs.res glyphs.rc}"

trong hồ sơ dự án của tôi ngay trên "{$ R * res}" dòng IDE đặt ở đó nhưng khi tôi thêm tập tin rc bằng cách sử dụng IDE, nó đặt nó ở trên "sử dụng" dòng và sau đó nó làm việc.

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