2010-09-07 65 views
19

Cách đặt "Thư mục/Điều kiện" trong Tùy chọn Dự án và đường dẫn "Thư viện" trong Tùy chọn Môi trường? Trợ giúp Delphi không nói nhiều về những cài đặt rất quan trọng này. Tôi có tất cả các loại lỗi lạ vì sự phụ thuộc sai giữa các VCL của tôi.Cách đặt đường dẫn "Thư mục/Điều kiện" và "Thư viện" chính xác

1.

Tôi đã hợp nhất một nhóm lớn các kiểm soát của bên thứ 3 trong gói có tên ThirdPartyPackages_D7.dpk. Điều này rất hữu ích khi tôi cài đặt lại Delphi vì tôi không phải cài đặt lại tất cả các VCL của bên thứ ba đó một cách thường xuyên.

Sau đó, tôi có các điều khiển của riêng mình trong MyControls_D7.dpk phụ thuộc vào VCP ThirdPartyPackages. Tôi cũng có một gói BlgPackage.dpk phụ thuộc vào MyControls.

Vào cuối chuỗi là ứng dụng của tôi (dự án DPR) đang sử dụng các điều khiển trong BlgPackage.

ThirdPartyPackages.dpk -> MyControls.dpk -> BlgPackage.dpk -> MyApplication.dpr 

Khi tôi thay đổi/chỉnh sửa cái gì đó để gói thứ hai (MyControls.dpk) và xây dựng ứng dụng DPR, nó hoạt động. Trình biên dịch thấy các thay đổi được thực hiện trong gói đó. Tuy nhiên, nếu tôi đóng dự án và tải và biên dịch BlgPackage, nó sẽ gửi một thông điệp khó chịu có chức năng xyz không thể tìm thấy trong MyControls vì tôi xóa nó (tôi đã nạp đơn vị MyControls vào IDE song song với các đơn vị của ứng dụng). Dường như việc xây dựng ứng dụng chỉ làm mới các tệp DCU cho tất cả các gói đã sử dụng chứ không phải các tệp DCP/BLP.

Làm cách nào để viết và biên dịch mã trong các gói mà không tải các gói một cách rõ ràng vào IDE và tạo chúng? (Lưu ý: Tôi có một lỗi khó chịu rằng không cho phép tôi để chuyển đổi giữa các dự án mà không cần khởi động lại IDE hoặc tải một nhóm các dự án/gói (* .bpg) cùng một lúc.)

2.

Một vấn đề khác là tôi muốn lưu trữ các tệp được biên dịch (DCP/BPL/DCU) của một gói trong thư mục của nó (ví dụ c: \ MyProjects \ Blg).
Nếu tôi đặt hộp thư "Thư mục đầu ra", "Thư mục đầu ra đơn vị" và "Thư mục đầu ra DCP" của gói BlgPackage vào thư mục của nó, không chỉ các tệp BPL/DCU/DCP của nó sẽ được lưu trữ ở đó mà còn các tệp BPL/DCP của MyControls sẽ được lưu trữ ở đó. Làm cách nào để có các tệp nhị phân của từng gói trong một thư mục riêng biệt?


Delphi 7, Win XP, tất cả các dự án thiết lập để "xây dựng lại khi cần thiết"

Trả lời

1

giải pháp MY (kinda bẩn, nhưng hey nó hoạt động):

tôi đặt TẤT CẢ libraries.controls bên thứ 3 trong một gói duy nhất (một siêu gói). Tôi đặt tất cả các điều khiển của tôi trong một gói duy nhất.

Bây giờ, khi tôi di chuyển các gói đến một máy tính khác, tất cả những gì tôi phải làm là sao chép/dán hai thư mục và đặt hai đường dẫn.

Làm việc cho tôi - những người khác có thể không đồng ý với điều đó và tôi không thể đổ lỗi cho họ. Tôi đổ lỗi cho 'nhà thiết kế địa ngục' từ Borland/Embarcadero. Nếu bạn nhìn vào StackOverflow bạn sẽ thấy rằng cho đến bây giờ không ai cung cấp một giải pháp thanh lịch cho việc này.

4
  1. Bạn explicitely nên biên dịch gói - chỉ cần biên dịch tập tin gói là không đủ và như bạn đã nhận thấy dẫn đến các vấn đề . Trong các phiên bản Delphi hiện đại, bạn có thể tạo một nhóm dự án (không chắc chắn về Delphi 7) có chứa một ứng dụng và gói bạn muốn phát triển với ứng dụng, và bạn có thể dễ dàng chuyển đổi giữa chúng và gói các gói mà không cần đóng/mở lại ứng dụng .

  2. BlgPackage không nên có quyền truy cập vào nguồn gói MyControls (thông qua đường dẫn "Thư viện" hoặc bằng cùng thư mục), nó chỉ truy cập gói MyControls đã biên dịch, các tệp khác từ MyControls được biên dịch mỗi khi bạn tạo BlgPackage và các tập tin biên soạn được lưu trữ trong thư mục BlgControls DCU


THÊM

các "thư viện" con đường sẽ dẫn đến tập tin biên dịch (.dcp, .dcu) và (nếu cần) các tệp tài nguyên (.res, .dfm) chỉ - nó đủ để biên dịch các ứng dụng và các gói yêu cầu gói "MyControls". Bạn có thể đặt thư mục cho các tệp đã biên dịch trực tiếp trong cài đặt gói và bạn nên sao chép các tệp tài nguyên (nếu bạn cần chúng) vào cùng một thư mục theo cách thủ công. Thư mục này nên được đưa vào đường dẫn "Thư viện", nếu không bạn có thể sử dụng thư mục đã có trong đường dẫn "Thư viện".

Đường dẫn "Thư viện" không được dẫn đến tệp nguồn (.pas) nếu bạn không muốn các tệp này được biên dịch mỗi lần bạn tạo BlgPackage hoặc ứng dụng yêu cầu gói "MyControls".

+0

@ Serg-Tôi không nghĩ rằng No2 sẽ hoạt động.Trợ giúp Delphi 7 nói rằng: "Nếu bạn cố gắng xây dựng gói của mình bằng một tệp không có trên đường dẫn thư viện, bạn sẽ nhận được lỗi trình biên dịch". Vì vậy, tôi sẽ không thể biên dịch gói của mình nếu tôi xóa đường dẫn của nó khỏi Thư viện. – Ampere

+0

Tôi đã làm điều đó và bây giờ tôi không thể biên dịch dự án. Tôi không thể tìm thấy một trong các DCU. DCU đó thuộc về MyControls. Nó nằm trong cùng thư mục chứa các tệp MyControls PAS. – Ampere

+0

@Altar - lưu trữ .dcu trong cùng một thư mục với .pas là một thực hành không tốt và nên tránh. DCU sẽ có sẵn thông qua đường dẫn "Thư viện", trong khi các nguồn (.pas) bình thường thì không. Trong mọi trường hợp, bạn có thể sao chép DCU gây ra sự cố cho thư mục có sẵn thông qua đường dẫn "Thư viện" theo cách thủ công, nếu vì một lý do nào đó bạn không muốn đặt đường dẫn DCU trong tùy chọn gói. – kludg

3

Tôi sử dụng cách đơn giản hơn nhiều cho các thành phần của bộ phận thứ 3 và cài đặt lại Delphi.

  • Mở regedit và tìm [HKEY_LOCAL_MACHINE/SOFTWARE/Borland/Delphi/xxx] trong đó xxx là phiên bản xuất khẩu và toàn bộ chi nhánh.
  • Mở tệp và xóa các khóa LMKEY, LMLIC.
  • Sao chép C: \ Program Files \ Borland \ Delphi x \ Projects \ thư mục BPL đến một vị trí khác
  • Sao chép C: \ Program Files \ Borland \ Delphi x \ Nhập khẩu đến một vị trí
  • Cài đặt lại Delphi bao gồm bất kỳ bản cập nhật và GExpert
  • nhập đã lưu trước đó đăng ký
  • Restore BPL và nhập khẩu thư mục

và whoala, Delphi là trở lại với tất cả các thành phần partie 3 và các thiết lập IDE. Chỉ giới hạn là tất cả các thành phần phải nằm trong cùng một thư mục trước và sau khi cài đặt lại Delphi.

Điều này cũng khôi phục cài đặt TeamSource. Nếu bạn đang cài đặt lại Windows, hãy đảm bảo làm cho người dùng windows có cùng tên người dùng như trước đây.

+0

Tôi đang sử dụng 'hack' này trong nhiều năm. Dù sao cũng cảm ơn bạn. +1 như những người khác có thể sử dụng nó. PS: Đừng quên khóa HKCU (cùng một vị trí:/SOFTWARE/Borland/Delphi/xxx). Tôi đoán LMKEY là HKLM nhưng LMLIC là gì? – Ampere

+0

LMKEY và LMLIC là thông tin giấy phép về Delphi và nếu bạn khôi phục chúng cũng như sau đó Delphi sẽ nghĩ rằng nó không được cấp phép hoặc một cái gì đó như thế. –

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