Я, кажется, создал код, который загружает память.
Никогда раньше таких проблем не было, теперь я настроен на недопустимую операцию указателя.
В дальнейшем значение константной строки sFilename удаляется после моего вызова PromptForXYZPropertiesSettings.
// Allow the user to quickly display the properties of XYZ without needing to display the full Editor
function PromptForXYZProperties(const sFilename:string; var AXYZProperties: TXYZProperties): boolean;
var
PropEditor: TdlgEditor;
begin
PropEditor:= TdlgEditor.create(nil);
try
PropEditor.LoadFromFile(sFilename); <-- sFilename = 'C:\My Folder\Some Folder.txt'
PropEditor.SelectedXYZProperties := AXYZProperties;
// Bypass PropEditor to show form owned by it
Result := PropEditor.PromptForXYZPropertiesSettings;
if Result then
begin
PropEditor.SaveToFile(sFilename); <-- sFilename now somethign like 'B'#1#0#0'ë' or value of a different var
end;
finally
PropEditor.free;
end;
end;
Другие детали:
- Delphi 2007, Windows 7 64 бит, но
можно воспроизвести при тестировании EXE на XP
- УДАЛЕНИЕ КОНСТОВ ОСТАНАВЛИВАЕТ ПРОБЛЕМУ С ВЫСТАВКИ (но предположительно
проблема, таким образом, просто скрывается)
- PropEditor.PromptForXYZPropertiesSettings
создает и показывает форму. Если я
отключить вызов ShowModal, то
память не разгромлена. Хотя я
УДАЛЕНЫ ВСЕ УПРАВЛЕНИЯ И КОД
из формы
Так что я хотел бы получить несколько советов о том, как отладить проблему. Возможно, я думал, наблюдая за указателем памяти, где существует переменная sFilename, чтобы увидеть, где он попадает в корзину, но не уверен, как бы я это сделал (очевидно, это нужно сделать в приложении, так как это собственная память).
Спасибо