Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Сохранение текстовых данных
as-masterДата: Воскресенье, 28 Октября 2007, 13:36 | Сообщение # 1
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Сохранить в текстовый файл какие-либо строковые данные можно как минимум двумя способами:

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")

Работает надежно, да и внедренный файл не требуется.


Да пребудет с вами ММВ!
 
  • Страница 1 из 1
  • 1
Поиск: