2011-08-15 29 views
6

Tôi muốn hiển thị toàn bộ nội dung của một TStringList trong khi gỡ lỗi ứng dụng. Thay vào đó, tôi chỉ nhận được con trỏ. Flist chỉ hiển thị địa chỉ.Làm cách nào để hiển thị nội dung của TStringList trong trình gỡ lỗi?

+1

Trong chế độ gỡ lỗi, có thể đánh giá biểu thức (FList.Text) để xem toàn bộ nội dung. – mjn

+0

Nhưng IIRC (không thể kiểm tra ngay bây giờ) chỉ khi bạn bật chức năng gọi cho các loại trong khi gỡ lỗi. –

+0

@Rudy: Điều này chỉ đúng đối với đồng hồ. Trong cuộc gọi "Đánh giá và sửa đổi" chức năng cửa sổ (và thủ tục ví dụ như setter) luôn có thể. – dummzeuch

Trả lời

2

Tôi sử dụng trình hiển thị ngay bây giờ mà tôi có D2010. Tôi đã từng sử dụng một hàm mà tôi gọi là CArray để trả về một chuỗi các chuỗi. Nếu tôi thêm CArray (MyStringList) vào cửa sổ xem, tôi sẽ có thể kiểm tra nội dung của danh sách chuỗi. Tôi sử dụng để được sử dụng để viết mã VB6 và tôi loại thích các chức năng khác nhau 'C' để chuyển đổi thành một loại hữu ích. CArray cho stringlists và CArray cho các trường ClientDataset chủ yếu là hữu ích để gỡ lỗi.

function CArray(List: TStrings): TStrArray; Overload; 
    var i, 
     iCount: Integer; 
    begin 
    iCount := List.Count; 
    SetLength(Result, iCount); 
    for i := 0 to Pred(iCount) do Result[i] := List[i]; 
    end; 
+0

Tính năng hiển thị hình ảnh mới đẹp (thậm chí đẹp hơn là bạn có thể viết trình hiển thị tùy chỉnh của riêng mình!). Trình hiển thị 'TStrings' mặc định đi kèm với IDE có một số giới hạn kích thước trên nội dung TStrings. –

7

Nếu bạn đang sử dụng Delphi 2010 trở lên, trình gỡ lỗi cho phép điều này bằng cách sử dụng debug visualizers.

Đối với các phiên bản cũ hơn, bạn có thể đổ nội dung của thuộc tính Văn bản trong cửa sổ Xem hoặc sử dụng OutputDebugString, nhưng khó đọc. Bạn có thể thiết lập đồng hồ cho từng yếu tố trong danh sách, nhưng đó chỉ là thực tế cho các danh sách rất ngắn.

Tôi có thể sử dụng ứng dụng ghi nhật ký bên ngoài như CodeSite hoặc SmartInspect cho phép bạn đổ nội dung của một TStringList trong một cuộc gọi.

4

Kiểm tra thuộc tính Văn bản. Đó là phiên bản nối của danh sách chuỗi.

3

Kể từ khi tôi đang sử dụng BDS MMVI, tôi đang sử dụng một "thông minh siêu thông minh" phương pháp cho rằng vấn đề hiện vật, tôi sử dụng nó cho các tài liệu xml lớn. Tôi bắt đầu biên tập tập tin ngữ cảnh (rất có khả năng soạn thảo văn bản miễn phí writen trong delphi bằng cách này). Trên cửa sổ trình gỡ lỗi chỉ cần làm một FList.SaveToFile ('contents.txt'), vì bối cảnh có thể theo dõi các sửa đổi tập tin tôi có thể thấy những gì đang xảy ra trong các tập tin xml của tôi.

Xin lỗi vì trò đùa "thông minh" nhưng nó có hiệu quả đối với tôi.

Hòa bình

+0

+1 Bạn trả lời trước :) Tôi cũng sử dụng [ConTEXT] (http://www.contexteditor.org/) vì nó miễn phí và thân thiện, nhưng tệp có thể được mở ngay cả trong IDE Delphi. – ThinkJet

2

hai xu của tôi:

Bạn có thể đánh giá biểu hiện list_instance_variable.SaveToFile('temp_file_name.txt') và sau đó kiểm tra nội dung của các tập tin trong bất kỳ trình soạn.

Để làm điều đó, bạn phải sử dụng chức năng này ở bất kỳ nơi nào trong mã và tắt tối ưu hóa (ít nhất là trong Delphi 7), nếu không mã đối tượng của SaveToFile sẽ bị xóa bởi trình liên kết.

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