Как я могу показать содержимое TStringList в отладчике?
Я хочу отобразить все содержимое TStringList во время отладки приложения. Вместо этого я просто получаю указания. В Flist показывает только адрес.
5 ответов
Я использую визуализаторы теперь, когда у меня есть D2010. Я использовал функцию, которую я назвал CArray, которая возвращала массив строк. Если я добавлю CArray (MyStringList) в окно просмотра, я смогу изучить содержимое списка строк. Раньше меня использовали для написания кода VB6, и мне понравились различные функции " C " для преобразования в полезный тип. Поля CArray для stringlists и CArray для ClientDataset были в основном полезны для отладки.
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;
Если вы используете Delphi 2010 или более позднюю версию, отладчик позволяет использовать отладка визуализаторы.
для более старых версий вы можете сбросить содержимое свойства Text в окне просмотра или с помощью OutputDebugString, но это трудно прочитать. Можно настроить часы для каждого элемента списка, но это только для очень коротких списков.
Я бы, вероятно, использовал внешнее приложение для ведения журнала, как CodeSite или SmartInspect это позволит вам сбросить содержимое TStringList за один вызов.
поскольку im использует BDS MMVI, im использует "ультра умный умный" метод для этой проблемы, я использую его для больших xml-документов. Я запускаю редактор контекстных файлов (кстати, очень способный бесплатный текстовый редактор в delphi). В окне отладчика a просто сделайте FList.SaveToFile('содержание.txt'), поскольку контекст может отслеживать изменения файлов, я могу видеть, что происходит в моих xml-файлах.
извините за" умную " шутку, но она работает для меня.
мир
мои две копейки:
Вы можете оценить выражение list_instance_variable.SaveToFile('temp_file_name.txt')
и затем проверять содержимое файла в любом редакторе.
для этого вы должны использовать эту функцию в любом месте кода и отключить оптимизацию (по крайней мере, в Delphi 7), иначе объектный код SaveToFile
будет удален линкер.