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


Форумы  :: FAQ FoxPro

Как работать с путями доступа и именами файлов, содержащих пробелы
Дата: 22.02.06 22: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)



Исправлено 1 раз(а). Последнее : Владимир Максимов, 22.02.06 22:02
Ratings: 0 negative/4 positive


Тема Просмотров Написано Написано
  Program 5563 Владимир Максимов 01.03.05 22:02
  Как определить директорию, из которой запущена программа 9794 Владимир Максимов 22.03.05 10:41
  Как проверить факт существования переменной памяти, поля таблицы, метода формы 14030 Владимир Максимов 20.04.05 18:31
  Как работать с ini-файлами 15792 Владимир Максимов 01.05.05 12:17
  Символьные поля, переменные памяти и константы 9740 Владимир Максимов 25.09.05 13:31
  Как работать с путями доступа и именами файлов, содержащих пробелы 7892 Владимир Максимов 22.02.06 22:00
  Как вывести приложение на передний план 18055 Владимир Максимов 04.03.07 14:17
  Как получить разницу двух дат в формате: лет, месяцев, дней 10773 Владимир Максимов 25.02.08 18:32


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

On-line: 1 (Гостей: 1)

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