2011-12-20 28 views
9

Tôi đang tái cấu trúc một dự án lớn và cần phải di chuyển một số thành phần sang các mô-đun và biểu mẫu mới. Có một cách lành mạnh để đảm bảo tính chất của các thành phần phụ thuộc được cập nhật?Trong Delphi có cách nào để xem tất cả các tham chiếu và liên kết đến một thành phần không?

Có thể grep dfms của dự án?

Ví dụ: Di chuyển một TDataSource từ một DataModule lớn thành một tệp nhỏ hơn. Trong một số trường hợp, nguồn có thể đã được tham chiếu bởi 40-50 hình thức. Tôi cần đảm bảo tất cả các điều khiển tham chiếu đến nguồn dữ liệu được cập nhật.

+0

Tôi muốn grep tệp dfm và sau đó tôi muốn sử dụng tập lệnh dựa trên regex perl để thực hiện các sửa đổi cần thiết –

+2

Phiên bản sau của Delphi cho phép bạn cấu trúc lại và đổi tên từ trình chỉnh sửa. Bạn đã thử tính năng đó chưa? Ngoài ra, nó là một ý tưởng tốt để loại bỏ nó hoàn toàn từ vị trí ban đầu hoặc đổi tên nó để trình biên dịch của bạn sẽ nắm bắt những gì bạn bỏ lỡ. –

+1

@marcus đổi tên cấu trúc lại không bao giờ hoạt động với các dự án thế giới thực. Tôi sẽ ngạc nhiên nếu nó xử lý tài liệu tham khảo tập tin dfm. –

Trả lời

6

GREP trong GEXperts cho phép tìm kiếm cả tệp pas và dfm.

+0

Đây là cách nhanh nhất để tôi đạt được chính xác những gì tôi muốn. –

+0

Tôi sẽ không ngạc nhiên nếu ModelMaker CodeExplorer có một số khả năng khá mạnh mẽ trong lĩnh vực này. –

5

Trước tiên, tôi chắc chắn hy vọng bạn đang sử dụng kiểm soát phiên bản.

Tôi nhận ra đây là câu trả lời "rất hiển nhiên", nhưng cách tốt nhất tôi thấy để xem tất cả các tham chiếu và liên kết đến thành phần là (sử dụng điều khiển phiên bản để tôi có thể hoàn nguyên tất cả thay đổi sau), đổi tên thuộc tính hoặc thành phần, và sau đó xem những gì phá vỡ.

Pascal Analyzer không có nhiều trợ giúp ở đây.

Tính năng tái cấu trúc của Delphi có thể hữu ích (hãy thử sắp xếp lại tên và xem có bao nhiêu địa điểm có thể gợi ý rằng nó sẽ tự động đổi tên cho bạn). Không áp dụng thay đổi, chỉ cần xem xét các đề xuất.

Theo như "di chuyển thay vì đổi tên" một số kiểm soát hoặc tài nguyên, hãy hỏi "tại sao" bạn đang thực hiện điều đó. Tại sao di chuyển nguồn dữ liệu? Nguồn dữ liệu chỉ đơn giản là điểm đích cho các điều khiển nhận biết dữ liệu của bạn và bạn được phép có nhiều nguồn dữ liệu trỏ đến một tập dữ liệu duy nhất. Tại sao không di chuyển chỉ các tập dữ liệu, và để nguyên nguồn dữ liệu ở đâu?

+0

Tài nguyên được bao gồm trong MEGADATAMODULE hiện đang được chia nhỏ và các nguồn được đưa vào các biểu mẫu cần chúng. –

+3

Trong Trình phân tích cú pháp Pascal, "Tham chiếu chéo ngắn gọn" hiển thị nơi tất cả các số nhận dạng được sử dụng. –

+0

Được rồi, có thể tôi đã sai rồi. +1 cho Bruce. –

4

Nếu bạn đang sử dụng XE hoặc sau này, bạn có thể nhấp chuột phải vào tên thành phần hoặc số nhận dạng khác trong trình chỉnh sửa mã và chọn Search for Usages để nhận danh sách tài liệu tham khảo cần cập nhật.

Cập nhật: Thật không may, điều này chỉ hoạt động đối với các tham chiếu mã nguồn và không hiển thị nơi định danh được sử dụng trong DFM.

+0

Bí quyết tuyệt vời! Tôi thậm chí không biết đó là ở đó! –

+0

Tôi không thấy công việc này ở cấp độ dfm. Tôi cần phải tìm danh sách thả xuống tôi vừa giết bằng cách đổi tên hoặc di chuyển bảng tra cứu của nó. Theo kinh nghiệm của tôi những trường hợp này không thể được tìm thấy thông qua kiểm tra cú pháp cũng không tìm kiếm cho Usages đi vào dfms. –

+4

Có tìm thấy tập quán trong các tệp DFM không? Tôi đã thử một TImageList trong một datamodule được kết nối với một menu và một thanh công cụ trong hai khung hình khác nhau - không có khung nào được tìm thấy. –

0

Trong Delphi hoặc Notepad ++, hãy tìm trong tệp cho MEGADATAMODULE và đảm bảo bao gồm toàn bộ nhánh nguồn của bạn. Điều đó sẽ tìm thấy tất cả các trường hợp. Bạn cũng có thể sử dụng Notepad ++, thực hiện tìm kiếm trên tất cả các tệp .dcp, .bpl, .dll và .exe, để xem có thể xây dựng lại những gì.

+2

AFAIK, "Tìm trong tập tin" trong Delphi không tìm thấy tài liệu tham khảo trong các tập tin DFM. –

+1

nó, nếu, thay vì "tìm kiếm trong tất cả các tập tin trong nhóm dự án", bạn sử dụng "tìm kiếm trong thư mục", và sử dụng mặt nạ tập tin thích hợp. –

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