2010-10-20 18 views
5

Tôi đã tạo một gói thiết kế với đăng ký thành phần (thành phần chính nó là trong thời gian chạy) và một số mục trình đơn IDE.Bất kỳ ý tưởng nào cho Delphi XE có thể ngẫu nhiên không tải gói thiết kế?

Nếu tôi nhấp vào mục menu "Cài đặt" trong menu ngữ cảnh từ Trình quản lý dự án - gói sẽ được tải và hoạt động bình thường (luôn luôn).

Nếu tôi đóng IDE và khởi động lại nó - gói thể được nạp hoặc có thể không được nạp. Dường như ngẫu nhiên. Nhưng nó thường không tải, hơn là tải.

Nếu tôi đi đến gói thành phần/cài đặt - tôi thấy gói của tôi trong danh sách, hộp kiểm được chọn, nút "Thành phần" hiển thị các thành phần trong gói của tôi, nhưng gói thực thi chính nó thậm chí không được nạp trong IDE! (Tôi đã xác minh điều này thông qua Process Explorer). Cài đặt lại (gỡ bỏ gói -> Ok -> Gói thành phần/Cài đặt -> Thêm -> Ok) không giúp được gì. Nhưng gỡ cài đặt/cài đặt từ menu ngữ cảnh của dự án trong Trình quản lý dự án - luôn giúp ích.

Tôi đã thêm OutputDebugString vào phần khởi tạo của từng mô-đun của tôi trong gói. Và tôi thấy rằng các phần khởi tạo không chạy.

Gói thời gian chạy nằm trong cùng một thư mục với gói thời gian thiết kế. Thư mục nằm trong biến môi trường PATH. Tôi cũng đã cố gắng đặt các gói trong thư mục Bin của Delphi. Không có thông báo lỗi. Không có OutputDebugStrings lạ/chẩn đoán nào.

Bất kỳ ý tưởng nào?

P.S. Tôi có hành vi này trên 2 máy khác nhau. Một là Win7, một là WinXP SP 2.

P.P.S. Tôi đã không thể tái tạo hành vi này trên Delphi 7. Cùng một gói, biên dịch lại cho D7 tải luôn.

Trả lời

8

Tôi nhận thấy rằng Delphi mới có tính năng tải gói bị trì hoãn. Điều này sẽ tối ưu hóa tốc độ khởi động, khi gói không được tải, khi chúng không cần thiết.

Tính năng này hoạt động tốt đối với các gói thành phần, nhưng làm hỏng một gói thú vị cho các gói (ví dụ) sửa đổi menu IDE.

Bạn có thể yêu cầu IDE luôn tải gói của mình bằng cách gọi ForceDemandLoadState (dlDisable) từ Đăng ký thủ tục.

P.S. Tại sao bạn luôn tự tìm câu trả lời gần như ngay sau khi đăng câu hỏi? : D

+2

Bởi vì trong câu hỏi bạn phải suy nghĩ lại vấn đề để truyền đạt vấn đề cho người khác - cuối cùng, bạn sẽ thấy vấn đề với quan điểm khác. Đôi khi điều này là đủ. –

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