:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки ::
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  


Форумы  :: FAQ FoxPro

Как работать с путями доступа и именами файлов, содержащих пробелы
Дата: 22.02.06 21:00:17 ОтветитьЦитировать

Вопрос

При использовании путей доступа или имен файлов, содержащих пробелы, я получаю сообщения об ошибках. Как работать с путями доступа и именами файлов, содержащих пробелы?

Ответ

В общем случае следует обрамлять такие имена кавычками или использовать выражения имени.

Например, на Вашем компьютере есть файл по такому пути доступа:

Цитата:
C:\Мои документы\Мой файл.txt

Если Вы хотите обратиться к такому файлу напрямую, по имени, то это следует делать так:

MODIFY FILE "C:\Мои документы\Мой файл.txt"

Если Вы считали это имя в переменную памяти, например, при помощи функции GetFile() или имя директории при помощи функции GetDir(), то следует использовать выражение имени. Скобки.

  
  LOCAL lcFileName  
  lcFileName = GetFile()  
  MODIFY FILE (m.lcFileName)

В принципе, можно использовать и символ макроподстановки. Но в этом случае нужно достаточно хорошо понимать, что именно происходит в этом случае. Дело в том, что при использовании символа макроподстановки происходит формальная замена переменной памяти на тот текст, который в ней записан. Другими словами код

  
  LOCAL lcFileName  
  lcFileName = "C:\Мои документы\Мой файл.txt"  
  MODIFY FILE &lcFileName

фактически преобразуется в такой код

MODIFY FILE C:\Мои документы\Мой файл.txt

Далее вступает в действие синтаксический анализатор кода. Для него имя файла - это параметр команды. А параметры, в данном случае, отделяются друг от друга пробелами. Следовательно, FoxPro прочитает данную команду следующим образом:

MODIFY FILE C:\Мои

Разумеется, ни такой директории, ни имени файла не существует. И Вы получаете сообщение об ошибке.

Чтобы предотвратить подобное развитие событий, необходимо добавить дополнительные кавычки

  
  LOCAL lcFileName  
  lcFileName = ["C:\Мои документы\Мой файл.txt"]  
  MODIFY FILE &lcFileName

Этот код будет прочитан следующим образом

MODIFY FILE "C:\Мои документы\Мой файл.txt"

Вот здесь уже все в полном порядке. Параметр - это то, что ограничено кавычками.

Хотя, разумеется, использование дополнительных кавычек не слишком удобно. Поэтому проще при работе с именами файлов использовать выражения имени. Т.е. скобки. В этом случае Вы автоматически страхуетесь от возможных пробелов в именах файлов и путях доступа.

  
  LOCAL lcFileName  
  lcFileName = "C:\Мои документы\Мой файл.txt"  
  MODIFY FILE (m.lcFileName)



Исправлено: Владимир Максимов, 22.02.06 21:02
Ratings: 0 negative/2 positive


Тема Просмотров Написано Написано
  Program 4920 Владимир Максимов 01.03.05 21:02
  Как определить директорию, из которой запущена программа 8401 Владимир Максимов 22.03.05 09:41
  Как проверить факт существования переменной памяти, поля таблицы, метода формы 11041 Владимир Максимов 20.04.05 17:31
  Как работать с ini-файлами 13900 Владимир Максимов 01.05.05 11:17
  Символьные поля, переменные памяти и константы 8008 Владимир Максимов 25.09.05 12:31
  Как работать с путями доступа и именами файлов, содержащих пробелы 5987 Владимир Максимов 22.02.06 21:00
  Как вывести приложение на передний план 15560 Владимир Максимов 04.03.07 13:17
  Как получить разницу двух дат в формате: лет, месяцев, дней 8849 Владимир Максимов 25.02.08 17:32


Извините, но у вас нет прав для того, чтобы писать в этом форуме.

On-line: 29 Александр Жевелев  and Guests: 28


© 2006 Fox Club 
Яндекс.Метрика