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, так вот по дороге сжатия что-то терялось, связи с этим и не отрабатывал тстринг. Есть какой-то другой компрессор ?
TStringList имеет ограничение на работу с очень большими файлами, если лог будет большым, то вполне возможно что будет генерироваться ошибка Out of memory или просто лог не будет сохранятся. Попробуйте переписать с использованием TFileStream.