2009-06-28 9 views
9

Tôi muốn áp dụng một sửa chữa từ QC cho một đơn vị Delphi 2009 (DBClient khi nó xảy ra). Tôi biết tôi cần phải sao chép các đơn vị vào một thư mục khác và thực hiện thay đổi để sao chép. Làm thế nào để tôi nhận được Delphi biên dịch đơn vị đó và sử dụng nó để ủng hộ DCU đã tồn tại?Làm cách nào để biên dịch lại một đơn vị cụ thể từ VCL?

Trả lời

16

Nếu bạn không muốn sửa đổi tệp .Pas gốc, tôi thực hiện việc này bằng cách sao chép tệp .Pas vào thư mục ứng dụng của tôi, sau đó chọn dự án đã xây dựng, nó sẽ tạo tệp dcu mới trong thư mục ứng dụng của tôi được sử dụng thay cho bản gốc.

+15

Hãy coi chừng điều này sẽ không hoạt động nếu các đơn vị VCL khác phụ thuộc vào đơn vị thay đổi, trong trường hợp đó, chúng cũng cần phải được biên dịch lại. Nếu không, việc liên kết ứng dụng sẽ không thành công. – mghie

+2

Và nó sẽ không hoạt động nếu bạn sử dụng các gói thời gian chạy và xem ra với 'Sử dụng DCU gỡ lỗi' –

2

Đây là một phương sách cuối cùng (và không được CodeGear hỗ trợ), nhưng tôi làm điều gì đó tương tự như Mohammed khi cần thiết. Ngoại trừ thay vì đặt bất kỳ đơn vị đã sửa đổi nào vào thư mục ứng dụng, tôi đặt chúng vào thư mục riêng của chúng với phần còn lại của mã thư viện của tôi và bao gồm thư mục này trong đường dẫn thư viện của tôi. Nó cũng ngăn cản tôi không có nhiều bản sao (có thể hơi khác).

Tôi cũng kiểm tra mọi cập nhật để xem điều gì đã thay đổi để tôi có thể xóa đơn vị đã sửa đổi hoặc áp dụng lại các thay đổi cho đơn vị mới hơn (và có lẽ tốt hơn) từ CodeGear.

0

Tôi chưa bao giờ tự làm điều này nhưng có các dự án trong {RAD}\source\rtl cùng với tập lệnh tạo hàng loạt. Tôi tin rằng điều này làm cho biên dịch lại các chức năng RTL dễ dàng. Các đơn vị khác nên được biên dịch lại dễ dàng hơn.

Nếu thay đổi bạn muốn làm là cục bộ và các đơn vị không được sử dụng rộng rãi bởi các đơn vị RTL/VCL khác, cách đơn giản nhất là đặt các bản sao của các đơn vị đã sửa đổi tách biệt khỏi vị trí tiêu chuẩn của chúng.

Một tùy chọn khác là vá thời gian chạy còn gọi là tẩy rửa.