2012-08-10 46 views
6

Khi tôi mở một dự án Delphi 7 trong Delphi XE2 và mở Option Dự án tôi nhận được một lỗi:Delphi 7 đến Delphi XE2 res vấn đề tập tin

"Unable to set Icon: Cannot open file "........\AppName_Icon.ico". 
The system cannot find the file specified". 

Tôi cũng nhận thấy rằng các thông tin Phiên bản của dự án là còn thiếu. Dự án Delphi 7 có tệp .Res có MAINICON cùng với thông tin phiên bản được lưu trữ. Tại sao Delphi XE2 không thể sử dụng tệp .Res này để truy xuất thông tin Phiên bản MAINICON &.

Ngoài ra nếu tôi cố gắng để biên dịch các ứng dụng trong XE2 tôi nhận được một lỗi -

[BRCC32 Error] MtxReq.vrc(2): file not found: MtxReq_Icon.ico 

File MTXReq.vrc (một tập tin mới) được tạo ra và các tập tin MtxReq.res sẽ bị xóa.

Tại sao điều này lại xảy ra? Tôi không muốn mất biểu tượng dự án và cài đặt phiên bản của tôi từ tệp .res.

Có cách nào để buộc XE2 sử dụng tệp .res và không xóa nó không?

Mọi trợ giúp sẽ được đánh giá cao.


Xin lỗi tôi không thể viết bình luận chưa (cần thêm điểm repotation) ...

Warren - ở đây là phản ứng cho câu hỏi của bạn (Sẽ không chỉ xóa tập tin của bạn và .dproj giữ chỉ .dpr, đã nhanh hơn?)

Tôi đã xóa .dproj, .dproj.local Đã mở .dpr trong XE2 và tạo lại tệp .dproj. Nó brough trở lại biểu tượng từ .res nhưng tôi bị mất thông tin phiên bản dự án. Thông tin Phiên bản tệp và Phiên bản sản phẩm đã được di chuyển nhưng bị mất tất cả thông tin phiên bản khác. (Điều này là do tệp kê khai mặc định). Sau đó tôi đã thử những gì tôi đã giải thích trong Bước 1 của giải pháp của tôi. Tôi mở tệp .dproj trong notepad đã xóa các mục nhập thẻ trong và mở lại tệp .dproj và tất cả thông tin phiên bản của tôi hiện đã được khôi phục. Vấn đề ở đây là $ (BDS) \ bin \ default_app.manifest. Ngoài ra, tôi nhận thấy rằng thông tin Phiên bản được lưu trữ trong thẻ dưới thẻ trong tệp .dproj và khi bạn xóa các mục kê khai mặc định, IDE sẽ lấy thông tin khóa phiên bản chính xác từ. Vì vậy, về cơ bản bằng cách xóa các tập tin .dpr tôi bỏ qua bước giải nén và thêm tập tin .ico vào dự án, nhưng đã phải chỉnh sửa tập tin .proj mới được tạo ra và xóa các mục cho bản kê khai mặc định để lấy thông tin phiên bản . (một giải pháp khác sẽ là manully thêm thông tin phiên bản và lưu dự án. Tôi không thử điều này)

Trả lời

12

Cập nhật 2015: Ý tưởng của tôi về việc tạo lại các tệp .PROROJ một cách cẩn thận bằng tay, là lời khuyên tuyệt vời và nên được xem xét trước, mặc dù câu trả lời của tôi được đánh dấu được chấp nhận.

Các phiên bản Delphi trước XE2 sử dụng tệp tài nguyên làm INPUT và OUTPUT trong quá trình biên dịch.Ví dụ, biểu tượng dự án delphi 7 của bạn được nhúng vào tệp .res, mà bạn "muốn delphi xe2 sử dụng", tuy nhiên, đó là vấn đề trong delphi 7, và bây giờ phẳng ra không thể trong XE2. Thay vào đó, bây giờ bạn xử lý tệp .res như một tạo phẩm đầu ra thuần túy, giống như tệp thi hành. Đừng bận tâm kiểm tra các tệp .res vào kiểm soát phiên bản nữa và đừng cố giả vờ rằng tệp .res là nơi bạn lưu trữ vĩnh viễn các biểu tượng của mình. Đó là một tập tin đầu ra được tạo ra tự động bởi trình biên dịch, vì nó luôn luôn có được.

Nếu bạn là một nhà phát triển hiện đại, cách cũ Delphi 7 có thể làm bạn khó chịu (điều đó làm tôi bực mình) vì bạn có câu hỏi thú vị và không thể giải quyết về việc cần làm để kiểm soát phiên bản: Bạn có kiểm tra trong .RES tập tin, hay không bạn? Có những hạn chế đối với cả hai phương pháp tiếp cận và thực tế là các tệp .RES hiện chỉ xuất hiện trong XE2 là tốt nhất. Vì vậy, học cách sống với điều đó.

Giờ đây, XE2 hỗ trợ các biểu tượng không chỉ cho PC mà còn cho máy Mac, nó phải xử lý mọi thứ khác nhau và chúng đã làm sạch điều này. Đây là nguồn gốc của sự cố bạn gặp phải với tệp .ICO. Tôi đã thấy chính xác cùng một lỗi, và tôi đã bỏ qua nó, và chỉ cần thêm biểu tượng trở lại dự án sau khi nó đã được chuyển đổi.

Chuyển đổi dự án delphi 7 (.dpr và .cfg) sang Delphi XE2 không phải là vấn đề lớn khi chuyển đổi giữa các cấp tệp .dproj khác nhau - mỗi phiên bản bắt đầu bằng Delphi 2005,2007,2009,2010, và trở đi đã thực hiện các thay đổi trong định dạng dproj. Khi vấn đề xảy ra với việc chuyển đổi các dự án này, tôi không làm như Remy gợi ý, bởi vì đó là một sự lãng phí thời gian. Những gì tôi làm là XÓA DPROJ và cho phép nó chuyển đổi từ tệp .dpr.
Nhưng lời khuyên của Remy để bắt đầu từ đầu có nhiều lợi thế, bao gồm cả việc bạn có thể đơn giản hóa bố cục dự án của mình.

Anyways, đây là những gì bạn cần làm:

  1. Bỏ qua lỗi.
  2. Thêm biểu tượng để tự mình lên kế hoạch.
  3. Tiếp tục vui vẻ cùng và đừng lo lắng về việc xóa tệp .res, đó là cố ý và vì những lý do chính đáng. Một cái mới sẽ được tạo ra bất cứ khi nào cần thiết. Tên tệp của tệp .ico trên đĩa sẽ được đọc bằng cách sử dụng nội dung của tệp tin XE2 .dproj và được biên dịch thành tệp .res, như nó cần.
3

Như mọi khi, bạn KHÔNG BAO GIỜ để IDE chuyển đổi dự án từ phiên bản cũ sang phiên bản mới hơn . RARELY chuyển đổi hoạt động chính xác. Bạn nên LUÔN tạo một dự án mới trong IDE mới hơn và sau đó thêm các tệp nguồn hiện có của bạn vào nó khi cần thiết.

+4

Tại sao bạn lại nói như vậy? Tôi chưa bao giờ có bất kỳ vấn đề nào cho phép ide thực hiện chuyển đổi. – dummzeuch

+2

Sau đó, hãy xem xét cho mình may mắn, bởi vì nhiều người dùng có vấn đề với nó. Diễn đàn Borland/CodeGear/Embarcadero đã có rất nhiều khiếu nại/mối quan tâm được đăng trong những năm liên quan đến các vấn đề về nâng cấp dự án. Nó không hoạt động ngay trong nhiều trường hợp. Hầu hết các thành viên của TeamB (bao gồm cả bản thân tôi) nói với những người dùng diễn đàn cùng một thứ lặp đi lặp lại - điều tương tự tôi đã nói ở đây. Tốt nhất là không nâng cấp một dự án, bạn chỉ không biết IDE có thể bị sai. Tạo một dự án mới để thay thế. –

+4

Tôi đã thấy những vấn đề này nhiều lần. Tôi chỉ không đồng ý về việc xóa .dpr và .dpk. Tôi chỉ tìm thấy bạn cần xóa bất kỳ tệp .dproj nào. Upgrades từ '.dpr' plus .cfg hoặc .dof làm việc liền mạch hơn nhiều so với nâng cấp từ cấp độ .dproj lên cấp độ .dproj khác. Lỗi tệp .ico mà OP đề cập đến là một ví dụ truy cập hiếm hoi của xu hướng chung này. Nhưng lỗi chủ yếu là vô hại, và đơn giản có nghĩa là bạn nên chèn thủ công một tệp .ico khác vì .res để trích xuất tệp .ico không thành công. Nếu bạn không còn có file .ico thì đó là một nỗi đau thực sự. –

1

Cảm ơn tất cả mọi người về các yếu tố đầu vào và đề xuất của bạn.

Sau khi tôi gửi tôi gửi bài, tôi đã cố gắng các bước sau để giải quyết vấn đề .ico và mất tích vấn đề bản/thông tin phiên bản mang về các vấn đề:

Bước 1. Đã chỉnh sửa tệp .dProj và xóa tham chiếu tới các mục có liên quan đến default_app.manifest theo thẻ (Nền tảng dự án của tôi là 32 bit) Tôi đã xóa tất cả các thẻ theo điều này ngoại trừ thẻ liên quan đến không gian tên System.Win; Data.Win; Datasnap.Win; Web .Win; Soap.Win; Xml.Win; Bde; $ (DCC_Namespace)

Nếu không có ứng dụng này của tôi luôn hiển thị thông tin phiên bản là 1.0.0.0 và bỏ qua mọi thứ khác mà tôi đã chỉ định.

(Tôi không chắc chắn nếu điều này là một bước đi đúng đắn nhưng nó giải quyết vấn đề thông tin phiên bản của tôi. Có thể có một đơn giản/một giải pháp cho điều này ...)

Bước 2. Trích các ico từ tệp .res cũ, đặt tên nó và thêm tệp .ico đó vào Dự án từ Tùy chọn Dự án. vật lý.Tập tin ico là thư mục dự án và sẽ được kiểm tra trong kiểm soát nguồn (VSS trong trường hợp của tôi).

Hai bước này đã mua cho tôi những gì tôi cần và sau đó tôi có thể sửa đổi số phiên bản và biên dịch dự án. Từ thời điểm này trở đi không có vấn đề gì.

Đây đơn giản hơn nhiều so với tổng số chuyển đổi/di chuyển mà tôi đã thực hiện cho các ứng dụng từ D7 sang XE2 - Unicode, chuyển đổi tùy biến Raize 5 componets sang Raize 6, Turbo Power, Virtual Tree View, Hypergrid, v.v ... vv ... May mắn thay tôi đã tìm thấy phiên bản XE2 của tất cả các thành phần này.

+0

Không chỉ xóa tệp .dproj của bạn và chỉ giữ .dpr, đã nhanh hơn? –

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