Сохранить в текстовый файл какие-либо строковые данные можно как минимум двумя способами: 1. Командой StrToFile() или StrToLine().
2. Командой SongListSave()
Но существует одна проблема: и в том, и в другом случае файл, если он не существует, можно сохранить ТОЛЬКО в уже имеющуюся папку, в том числе и с использованием макрокоманд пути <SrcDir>, <SrcDrive>, <Temp> и пр.
Если же папка не существует, то сохранение файла станет невозможным. Например, не получится запись файла по адресу <SrcDir>\date, если папки date не существует.
Как быть?
Ответ только один: предварительно создавать нужную папку. Есть несколько решений, как это сделать. Приведу один надежно срабатывающий способ.
=====================================
ПРИМЕЧАНИЕ. Само собой разумеется, что способ создания папки
системной программой cmd никто не отменял :) Привожу его здесь: param$='WAIT,HIDE /c md "' + 'полный_адрес_нужной_папки'
Run("cmd","param$")
Однако, у меня программа cmd иногда почему-то не срабатывает :-(
И потому я все-таки предпочитаю использовать средства ММВ,
на всякий случай. О чем и пойдет речь ниже.
=====================================
Нужно внедрить в проект некий не особо нужный файл, например текстовый файл readme.txt. И перед тем, как требуется записать файл (а еще лучше сразу при старте проекта) выполнить команду: SysCommand("CopyFile","<Embedded>\readme.txt,<SrcDir>\date\readme.txt")
При копировании файла папка date будет создана. После этого файл readme.txt можно удалить, а можно и оставить там, написав в нем что-нибудь путное :)
Кстати, этот внедренный файл не может быть нулевой длины, иначе он не будет скопирован (очередной баг ММВ?). Поэтому нужно записать туда хотя бы пробел, и файл станет длиной 1 байт.
Отсюда напрашивается еще одно решение, суть которого в следующем. Сначала записываем файл в имеющийся каталог, например в <Temp>, а затем копируем оттуда в нужный каталог, который при копировании создастся без проблем. Пример:
string$='Сохраняемый текст'
rv=StrToFile(<Temp>\0000000.tmp,string$,TRUE,TRUE)
SysCommand("CopyFile","<Temp>\0000000.tmp,<SrcDir>\нужная_нам_папка\нужный_нам_файл.txt")
Работает надежно, да и внедренный файл не требуется.