Thật dễ dàng, đủ để tìm tất cả các phụ thuộc bên ngoài của bạn. Chỉ cần chạy chương trình và mở cửa sổ thông tin Mô-đun. Nhưng làm cách nào tôi có thể tìm thấy tất cả các phụ thuộc nội bộ của mình? Tôi biết chương trình giữ một danh sách tất cả các đơn vị, bởi vì tôi đã truy tìm theo cách của mình thông qua mã khởi tạo một hoặc hai lần. Nhưng có cách nào dễ dàng để truy cập danh sách này từ trình gỡ rối không?Làm thế nào tôi có thể tìm thấy tất cả các đơn vị trong ứng dụng Delphi của tôi?
Trả lời
khác, mà đúng hơn là cách rườm rà, là để tạo ra một tập tin bản đồ, nó chứa một danh sách của tất cả các đơn vị được sử dụng trong một chương trình.
cũng thấy câu trả lời này: How can I find all the units in my Delphi app?
Bạn đã xem Pascal Analyzer hoặc phiên bản giới hạn miễn phí, Icarus, từ Peganza Software? Họ sẽ tạo ra "sử dụng các báo cáo" cho bạn biết những gì module sử dụng những gì người khác, vì vậy mà sẽ cung cấp cho bạn những thông tin bạn đang sau.
Marc
tôi biết ít nhất hai cách bạn có thể thử để có được một cái nhìn của tất cả các đơn vị sử dụng trong dự án của bạn
- Ctrl-Shift-B mở trình duyệt đối tượng. Nếu tôi không nhầm, ở đây bạn có thể có được một cái nhìn của các đơn vị được sử dụng. Tôi không hoàn toàn chắc chắn về phương pháp này và không có Delphi có sẵn để xác minh nó.
- Sử dụng Modelmaker; Người tạo mẫu có thể cung cấp cho bạn một cái cây giống như quan điểm của tất cả các phụ thuộc đơn vị của bạn. Nhìn vào phần Visualizing existing code để biết thêm thông tin.
Có một tiện ích (khá cũ) có tên là UsgParse. Nó xây dựng một khung nhìn tre của tất cả các đơn vị được tham chiếu bởi một dự án.
Tôi tìm thấy một bản sao trên trang web NexusDB qua http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.thirdpartytools.general/2004-03/0231.html
nguồn: http://www.nexusdb.com/downloads/USGParse/USGParse_src.zip
nhị phân: http://www.nexusdb.com/downloads/USGParse/USGParse.zip
GExperts có một công cụ Project Dependencies. Tôi đã sử dụng nó trước khi cố gắng theo dõi các đơn vị đã qua sử dụng. Bạn không thể tìm kiếm trong đó nhưng bạn có thể xuất danh sách sang tệp CSV và tìm kiếm ở đó. Điều này cũng chỉ liệt kê những gì có trong phần sử dụng. Nếu bạn có một mô-đun đi kèm mà không được sử dụng, nó sẽ vẫn hiển thị.
Tôi sử dụng GExperts Phụ thuộc dự án.
Với "Được sử dụng bởi ...", bạn có thể xem các đơn vị được bao gồm nhưng không được sử dụng bởi bất kỳ ai. Nhưng bạn không thể thấy đơn vị được bao gồm trong các mệnh đề sử dụng có thể bị xóa khi chúng không có bất kỳ mã nào thực sự được gọi.
Dưới đây là sự giúp đỡ:
Dự án Dependencies chuyên gia phụ thuộc dự án
này cho phép bạn xem những gì các đơn vị một đơn vị cụ sử dụng, và lần lượt những đơn vị sử dụng một đơn vị cụ thể. Khi chuyên gia này được kích hoạt, nó phân tích tất cả các mã nguồn của dự án hiện tại để sử dụng các mệnh đề và xây dựng một danh sách các phụ thuộc. Để xem thông tin phụ thuộc cho một đơn vị cụ thể, hãy nhấp vào nó trong ngăn bên trái. Khung bên phải sẽ chứa thông tin phụ thuộc. Phụ thuộc gián tiếp là các đơn vị được sử dụng bởi các đơn vị đã sử dụng của một đơn vị cụ thể.
Bạn có thể làm mới thông tin phụ thuộc bất kỳ lúc nào bằng cách nhấp vào nút làm mới trên thanh công cụ và bạn có thể sắp xếp danh sách tệp bằng cách nhấp vào tiêu đề cột.
alt text http://www.gexperts.org/tour/project%20dependencies.png
OTOH, bạn cũng có thể sử dụng miễn phí Peganza's ICARUS như một công cụ báo cáo chi tiết hơn, nhưng ít tương tác ...
Cách đơn giản nhất là để biên dịch chương trình và kiểm tra mà .dcu
được tạo ra bởi trình biên dịch. Đảm bảo thiết lập trình biên dịch để tạo .dcu
trong một thư mục riêng biệt, ví dụ: c:\dcu
. Tôi đã tạo tiện ích đơn giản để tìm kiếm .pas
cho mỗi tệp .dcu
trong các thư mục nằm trong đường dẫn tìm kiếm của trình biên dịch (có thể đọc từ .cfg
, .dof
hoặc .bdsproject
tệp).
Trình gỡ rối Delphi có thể hiển thị cho bạn các đơn vị nào được biên dịch thành một mô-đun (exe, dll hoặc gói). Bạn có thể thấy điều này trong giao diện Mô-đun (Xem | Gỡ lỗi Windows | Mô-đun). Nhấp vào một mô-đun ở khung bên trái phía trên và khung bên trái phía dưới sẽ hiển thị tất cả các đơn vị biên dịch được tích hợp vào mô-đun đó. Nếu một đơn vị biên dịch cụ thể được tạo thành từ nhiều tệp nguồn (tức là tệp .pas và tệp .inc), cũng sẽ được hiển thị (khi bạn mở rộng đơn vị comp).
Ngoài ra, bạn có thể có trình biên dịch Delphi hiển thị cho bạn danh sách .dcus được sử dụng bằng cách truyền --depends khi bạn biên dịch một dự án. Nó sẽ xuất ra một tệp .d với một danh sách .dcus (và .dcps) được yêu cầu.
Bạn có thể sử dụng tệp MAP kết hợp với MapFileStats, điều này sẽ không chỉ cung cấp cho bạn tất cả các phụ thuộc của bạn, mà số lượng mã (và tài nguyên) mà chúng đóng góp trong tệp thực thi cuối cùng.
Có ích để phát hiện các đơn vị bạn có phụ thuộc, nhưng sử dụng ít, cũng như phát hiện các đơn vị "mỡ heo", lấy tất cả mọi thứ cộng với bồn rửa nhà bếp với chúng.
FWIW, giảm phụ thuộc và loại bỏ lợn không chỉ có lợi cho kích thước thực thi, nó còn có lợi khi xuống đường khi đến lúc nâng cấp lên phiên bản mới.
- 1. làm thế nào tôi có thể tìm thấy css không sử dụng trong ứng dụng ajax?
- 2. MySQL: làm thế nào tôi có thể thấy tất cả các ràng buộc trên một bảng?
- 3. Sharepoint: làm thế nào tôi có thể tìm thấy tất cả các trang lưu trữ một phần web cụ thể?
- 4. Làm thế nào tôi có thể bắt tất cả ngoại lệ trong ứng dụng iPhone
- 5. Làm thế nào tôi có thể tìm thấy các tắc nghẽn hiệu suất trong ứng dụng Ruby của mình?
- 6. Làm thế nào tôi có thể tìm thấy tất cả các kết hợp có thể có của một danh sách các danh sách (bằng Python)?
- 7. Làm thế nào tôi có thể thấy những gì có trong heap của tôi trong Java?
- 8. Làm thế nào để tìm thấy tất cả các chuỗi con của một chuỗi trong PHP
- 9. Làm thế nào tôi có thể tạo tất cả các hoán vị của một mảng trong Perl?
- 10. Làm thế nào tôi có thể tìm thấy tất cả các tên miền giải quyết cho một địa chỉ IP?
- 11. Làm thế nào tôi có thể thấy ai đã kích hoạt một hành động trong Delphi?
- 12. Làm thế nào tôi có thể tìm thấy vị trí của lỗi "Danh sách chỉ mục ngoài giới hạn" trong Delphi
- 13. Làm thế nào tôi có thể tìm ra biểu tượng đơn vị tiền tệ phụ (đơn vị nhỏ) trong Java?
- 14. Làm thế nào tôi có thể tìm thấy vị trí của một trận đấu regex trong Perl?
- 15. Thêm đơn vị vào các mệnh đề sử dụng của tất cả các đơn vị trong một dự án?
- 16. Làm thế nào tôi có thể sử dụng ORM Django trong ứng dụng Tornado của tôi?
- 17. Làm thế nào tôi có thể nhận được tất cả các ổ đĩa USB (cắm vào)
- 18. Làm thế nào tôi có thể quản lý tất cả các cảnh báo trong TFS
- 19. Làm thế nào tôi có thể tìm kiếm tất cả các trường trong SOLR có chứa các từ khóa,.?
- 20. Làm thế nào để giữ tất cả các ứng dụng django của tôi trong thư mục cụ thể
- 21. Làm thế nào tôi có thể thay đổi tiền tố trong tất cả các bảng trong MySQL DB của tôi?
- 22. Làm thế nào tôi có thể tìm thấy tất cả các tập quán của một không gian tên và các thành viên của nó?
- 23. tôi có thể tìm thấy tất cả Android đâu xây dựng trong chủ đề
- 24. Làm thế nào tôi có thể tìm thấy điểm giao nhau của ba mặt phẳng?
- 25. làm thế nào tôi có thể lặp qua tất cả các cột của OracleDataReader
- 26. Làm thế nào tôi có thể nhận được tất cả các checkins của tôi trong Visual Studio 2010 TFS?
- 27. Làm cách nào tôi có thể đặt nơi ứng dụng Qt tìm thấy mô-đun Qt?
- 28. Tôi có một danh sách Python về các yếu tố chính của một số. Làm thế nào để tôi (pythonically) tìm thấy tất cả các yếu tố?
- 29. Trong mercurial làm thế nào tôi có thể tìm thấy changesets có chứa một chuỗi?
- 30. Làm cách nào để chạy thử nghiệm cho tất cả các ứng dụng Django của tôi?
Đã học điều gì đó mới hôm nay: '--depends' :) Tôi luôn làm sạch thư mục .dcu, sau đó thực hiện một thư mục' dir/b' của thư mục .dcu sau khi biên dịch. Thủ thuật gỡ lỗi cũng gọn gàng! –
Phiên bản nào của trình biên dịch biết về khóa chuyển đổi --depends? – dummzeuch
Tôi luôn có thể sử dụng nhiều bộ não hơn :-) Cảm ơn câu trả lời tuyệt vời này. –