Delphi TStrings.SaveToFile

Проблема в TStrings.SaveToFile, на одном компьютере файл создается, на другом нет. SaveToFile(ExtractFilePath(Application.ExeName) + FName) Может Windows блокировать создание ? Стоит копать в сторону Wow64DisableWow64FsRedirection ?


Ответы (3 шт):

Автор решения: Герман Борисов

StringList.SaveToFile('c:\windows\temp\'+FName)

Во-первых, в Windows 10 папка c:\windows\temp\ является системной, и не доступна обычным пользователям.

Во-вторых, папки c:\windows\ может вообще не существовать. Windows может быть установлена в другое место.

Гарантированный способ получить путь к папке для временных файлов - переменная среды %temp% и winapi GetTempPath.

Должно быть: StringList.SaveToFile('%temp%\'+FName)

→ Ссылка
Автор решения: Человек

Нашел в чем проблема. Сжимали проект через upx.exe, так вот по дороге сжатия что-то терялось, связи с этим и не отрабатывал тстринг. Есть какой-то другой компрессор ?

→ Ссылка
Автор решения: Andry

TStringList имеет ограничение на работу с очень большими файлами, если лог будет большым, то вполне возможно что будет генерироваться ошибка Out of memory или просто лог не будет сохранятся. Попробуйте переписать с использованием TFileStream.

→ Ссылка