Bạn có thể biên dịch lại RTL như bất kỳ đơn vị nào khác.
Đối với System.pas, bạn phải sử dụng trình biên dịch dòng lệnh.
Ví dụ, đây là một nội dung tập tin batch làm việc (có một số dòng lệnh không được ghi nhận switch):
del *.dcu /s
"c:\program files\borland\delphi7\bin\dcc32.exe" -O+ -Q -M -Y -Z -$D+ System.pas
này sẽ biên dịch lại System.pas và SysInit.pas (cả mức thấp nhất các file RTL) .
Nhưng để sử dụng các tệp DCU được tạo lại, bạn sẽ phải đặt thư mục chứa tệp dcu được cập nhật vào vị trí đầu tiên của IDE: ví dụ, trong Delphi 7 đó là Option/Environment Options/Library, đặt thư mục của bạn FIRST vào cả hai trường "Đường dẫn Libary" và "Đường dẫn duyệt web".
Và có lẽ đáng để xóa các tệp .dcu gốc trong thư mục cài đặt Delphi của bạn.
Nhưng hãy chắc chắn bạn sẽ không thay đổi phần "giao diện" của thiết bị hoặc bạn sẽ gặp khó khăn khi biên dịch với các đơn vị không được sửa đổi khác của RTL (hoặc các thành phần của bên thứ ba). Bạn có thể thay đổi phần "triển khai", áp dụng các bản sửa lỗi hoặc viết lại một số phần cho tốc độ hoặc như vậy, nhưng không thay đổi phần "giao diện" để tránh bất kỳ lỗi liên kết nào.
Luôn sao lưu các tệp .pas và .dcu gốc mà bạn đang thay đổi. Và bạn nên thực hiện một số thử nghiệm biên dịch tự động, để bạn có thể chắc chắn rằng các sửa đổi của RTL sẽ không thêm bất kỳ hồi quy nào.
Chúng tôi đã biên dịch RTL như vậy cho số Enhanced Run Time Library của chúng tôi để có tốc độ tốt hơn các hàm RTL ở mức thấp (chủ yếu là System.pas và SysUtils.pas). Được thiết kế cho Delphi 7 và 2007. Đối với phiên bản Delphi gần đây hơn, bạn vẫn có thể sử dụng nguyên tắc tương tự.
Nguồn
2011-01-30 08:56:06
Cảm ơn bạn đã viết rõ ràng, được hỗ trợ bởi trải nghiệm khó khăn. Xuất sắc! –