Префикс имени файла, что это такое
Обновлено: 21.11.2024
Имя файла с ключом переменной длины, содержащего записи данных, определяющие расположение определенных файлов (по сути, таблица поиска или таблицы перевода).
Числовое значение от 0 (ноль) до 9, которое определяет используемый элемент ПРЕФИКС. Если вы опустите это значение, по умолчанию будет 0 (ноль).
строка_поиска$
Один или несколько префиксов пути (местоположения поиска), по которым PxPlus должен выполнять поиск при попытке найти файлы/программы. Необязательное строковое выражение.
Опустите ПРЕФИКС строки [(num)]), чтобы PxPlus удалил ПРЕФИКС.
Если в директиве PREFIX указано несколько местоположений поиска, они должны быть разделены пробелом. Если вам нужно включить пробел в имя каталога, то местоположение этого каталога должно быть заключено в двойные кавычки:
ПРЕФИКС "C:\Tmp\C:\Usr\""C:\Program Files\"""
dirpfx$
Префикс логического каталога, который программа будет использовать при обращении к файлам.
Целевой фактический каталог, который будет использоваться при использовании виртуальных каталогов.
Описание
Используйте директиву PREFIX, чтобы определить ряд путей поиска, которые будут вставлены перед всеми относительными ссылками на файлы, используемыми в директивах OPEN/LOAD/RUN/CALL/PERFORM. (PxPlus открывает файлы с абсолютными путями напрямую, без поиска.)
Каждый префикс может содержать 0 (ноль) или более местоположений поиска. (Местоположением поиска является либо каталог, либо пара диск/каталог.) Вы можете указать до 10 префиксов с разными номерами (например, от ПРЕФИКСа (0) до ПРЕФИКСа (9)), а также ПРОГРАММУ ПРЕФИКСА и ФАЙЛ ПРЕФИКСА. См. описания различных форматов ниже.
Формат 1
ПРЕФИКС [search_string$]
Если числовой префикс не указан, команда PREFIX по умолчанию влияет на PREFIX(0).
Пример:
ПРЕФИКС "C:\TMP" будет применяться к ПРЕФИКСу(0)
Формат 2
ПРЕФИКС (число)[строка_поиска$]
Используйте этот формат, чтобы определить не более 35 пронумерованных записей таблицы префиксов (в диапазоне от 0 до 34) для установки правил поиска файлов. Каждая запись таблицы может содержать несколько путей:
ПРЕФИКС (4)"PGMS\CST\CASHRCPT\\PGMS\MGMT\MISC\\PGMS\SALES\"
Формат 3
ПРОГРАММА ПРЕФИКС [search_string$]
Используйте формат PREFIX PROGRAM, чтобы определить местоположение(я) поиска, которое PxPlus будет искать первым при попытке ЗАГРУЗИТЬ/ЗАПУСТИТЬ/ВЫЗОВАТЬ/ВЫПОЛНИТЬ/СОХРАНИТЬ программы:
Если вы опустите строку префикса или используете нулевую строку (ПРОГРАММА ПРЕФИКС ""), PxPlus сбрасывает префикс программы на нулевой.
Формат 4
ПРЕФИКС ФАЙЛА [имя файла$]
Если вы определяете ФАЙЛ ПРЕФИКСА, PxPlus ищет в этом специальном файле с ключом местоположение поиска всякий раз, когда встречает команду ОТКРЫТЬ с относительным именем файла, используя имя файла$ в качестве ключа к ФАЙЛУ ПРЕФИКСА. (Помните, что PxPlus открывает имена файлов с абсолютными путями напрямую, без выполнения поиска.) Обычные правила поиска по ПРЕФИКСам по-прежнему применяются после того, как имя файла находится в ФАЙЛЕ ПРЕФИКСА.
Когда вы записываете в этот специальный файл с ключом, считайте имя файла из команды OPEN вашей программы ключом. Запись данных для каждого ключа содержит истинное имя файла, который вы хотите открыть вместо этого. (PxPlus извлекает запись данных внутри с помощью READ RECORD.)
Пример:
С КЛЮЧОМ "someloc.dat", 25
ОТКРЫТЬ(chan)"someloc.dat"
ЗАПИСАТЬ ЗАПИСЬ(chan,key="myfile")"c:\tmp\myfile" ЗАКРЫТЬ(чан)
.
ПРЕФИКС ФАЙЛА "someloc.dat"
OPEN(chan)"myfile ! Внутри это становится OPEN(chan)"c:\tmp\yfile" вместо этого
Значение, возвращаемое функцией PFX(-1), можно использовать для определения того, установлен ли ФАЙЛ ПРЕФИКС и каков его путь.
Макет записи ФАЙЛА ПРЕФИКС
ФАЙЛ ПРЕФИКСА определяется как файл с ключом с первичным/внешним ключом, равным максимальному имени файла, которое будет использовать ваше приложение. Первое поле в этом файле будет содержать реальный путь к доступу, а второе поле будет содержать параметр OPT= значение параметра, которое будет использоваться во время OPEN. Любые параметры, указанные во втором поле, будут добавлены к любым параметрам, указанным при открытии.
В PxPlus можно указать третье поле, содержащее IOLIST для использования при открытии файла с параметром IOL=*.
(Поддержка PREFIX FILE для включения IOLIST была добавлена в PxPlus v8.11, сборка 9182.)
Пример:
10 префикс файла "";z$="mypfx.dat";стереть z$,err=*следующий
20 с ключом z$,32;открыть замок(1)z$
30 записать (1,key="xyz")"/mydata/company","","A$,B$"
40 закрыть(1)
запустить
открыть (1 ,iol=*)"/mydata/company"
print mid(lst(iol(1)),1,70)
КОД IOLIST$,NAME$,ADDRESS$,COUNTRY$,ZIP$, ZIP2$,PLACE$,CLASS$,NAMEALFA
префикс файла "mypfx.dat
open(2,iol=*)"xyz"
print lst(iol(2))
>IOLIST A$,B$
Кроме того, если путь (первое поле) в записи PREFIX FILE пуст, будет использовано исходное имя файла, что позволит добавить в PREFIX FILE только открытые параметры и IOLIST.
Начиная с PxPlus 2014, ФАЙЛ ПРЕФИКСА может быть определен с помощью внутреннего ключа. Это позволяет применять к именам файлов внутренние ключевые параметры, такие как нечувствительность к регистру и удаление диакритических знаков. Когда PREFIX FILE имеет внутренний ключ, он должен быть первым полем, а значения во всех остальных полях должны быть увеличены на одно поле (таким образом, истинное имя пути — это поле 2, опции в поле 3, и IOLIST в поле 4).
Правила поиска PxPlus
По умолчанию PxPlus ищет все префиксы в следующем порядке:
Директива ОТКРЫТИЯ
Директивы ЗАГРУЗИТЬ / ВЫПОЛНИТЬ / ВЫЗОВ / ВЫПОЛНИТЬ / СОХРАНИТЬ
<р>1. ФАЙЛ ПРЕФИКСА, если установлен; заменяет путь, затем продолжает последовательность <р>1. ФАЙЛ ПРЕФИКСА, если установлен; заменяет путь, затем продолжает последовательность <р>2. Кэш программы <р>2. Текущий каталог; если установлен системный параметр CD <р>3. Текущий каталог; если установлен системный параметр CD <р>3. ПРЕФИКС от 0 до 9 <р>4. ПРОГРАММА ПРЕФИКСА, если установлена <р>4. ПРОГРАММА ПРЕФИКСА, если установлена <р>5. ПРЕФИКС от 0 до 9 <р>5. Текущий каталог; если системный параметр 'CD' не установлен <р>6. Текущий каталог; если системный параметр 'CD' не установленПравила поиска PREFIX применяются не только к найденным файлам, но и к создаваемым файлам. PxPlus создает файлы в первом расположении, разрешенном правилами PREFIX. Если системный параметр 'CD' (Поиск в текущем каталоге) Вкл., то все файлы создаются в текущем каталоге (первом разрешенном местоположении). Если системный параметр «CD» Выключен, PxPlus создает файл в первом расположении, разрешенном приведенными выше правилами поиска. Для поиска библиотек DLL используются правила поиска Windows (т. е. не правила поиска PREFIX или текущий каталог).
Используйте директивы ENABLE и DISABLE, чтобы указать, какой из пронумерованных префиксов PxPlus будет использовать при поиске. (При сканировании префиксов от 0 до 9 PxPlus игнорирует все отключенные префиксы.)
Обратите внимание, что первоначальная проверка кэша PROGRAM проверяет совпадение с исходными именами файлов. Таким образом, если вы использовали CALL «ABCD» и ранее загрузили программу с таким же именем, PxPlus будет использовать программу из кэша. Это устраняет необходимость поиска в каталоге; однако, если в вашей системе есть повторяющиеся имена программ, можно получить неправильное (например, если вы ВЫЗОВИТЕ "ABCD", измените каталог/префикс, а затем повторно ВЫЗОВИТЕ "ABCD"). Если это происходит из-за повторяющихся имен программ в вашей системе, либо очистите кеш, либо не используйте его.
Для получения дополнительной информации см. следующее:
Знаки равенства для сопоставления
Знаки равенства в строке поиска PREFIX имеют особое значение. Каждый символ имени файла, который соответствует по положению знаку равенства, будет использоваться для формирования имени подкаталога, которое будет использоваться при поиске. Например, если вы включите один знак равенства, PxPlus интерпретирует это как означающее, что первый символ имя файла$ также является именем подкаталога. Если вы включите два знака равно знака, первые два символа будут считаться соответствующими имени подкаталога и т. д.
PxPlus автоматически находит место для извлечения или создания файлов, сначала ища подкаталог с совпадающим именем, символ за символом, в последовательности, часть имени файла, которая соответствует равно знаки. Это позволяет сортировать файлы по подкаталогам на основе автоматической замены первых нескольких символов имени файла и ускоряет поиск и/или создание и сохранение файлов в подкаталогах.
Если запись каталога в PREFIX содержит знаки равенства, как показано в приведенном выше примере, PxPlus оценивает первые два символа как совпадающие и использует их в качестве имени подкаталога, в котором начнется поиск. для относительных ссылок на файлы.
Пример:
В следующем примере PxPlus оценивает имя файла ARHIST как C:\MYAPP\AR\ARHIST для целей первоначального поиска:
Звездочки как подстановочные знаки ПРЕФИКС
Вы также можете использовать * и ** в качестве подстановочных знаков, чтобы поддерживать использование расширений имен файлов без изменения кода. Эта функция была добавлена в язык PxPlus с версии 4.20 в первую очередь для пользователей Windows 2000, поскольку правила сертификации Microsoft для Windows 2000 требуют, чтобы все файлы имели расширения. С помощью подстановочных знаков вы можете переименовывать файлы на диске с общим расширением без изменения программного кода.
Если директива PREFIX включает звездочку и указанное расширение в качестве имени файла, PxPlus вставляет имя файла из вашей команды OPEN вместо звездочки и сначала ищет имя файла с расширением, указанным в префиксе:
PxPlus просканирует диск на наличие "c:\somedir\FOOFOO.PRG" и открыть этот файл, если он найден. Если файл FOOFOO.PRG не найден, PxPlus попытается найти и открыть файл с именем "FOOFOO".
Если директива PREFIX включает две звездочки плюс указанное расширение в качестве имени файла, описанная выше замена одной звездочки произойдет, только если ваша директива OPEN включает простую имя файла (т.е. имя файла без расширения). Если ваше имя файла сложное (например, MY_FILE.DAT), подстановка не производится:
Поскольку OPEN (chan)"FOOFOO" содержит простое имя файла, PxPlus сначала будет искать "c:\somedir\FOOFOO.PRG", а затем, если не найдет, "FOOFOO". Поскольку MyFile.Dat — это сложное имя файла, а в имени файла PREFIX используются две звездочки, PxPlus не добавляет расширение .PRG к MyFile.Dat при выполнении поиска для поиска и открытия файла.< /p>
Формат 5
Виртуальные каталоги
ПРЕФИКС КАТАЛОГ dirpfx$ = dirpath$
Формат PREFIX DIRECTORY используется для определения виртуальных каталогов в вашей системе PxPlus.
Когда система анализирует пути, она сравнивает путь, указанный программой, со всеми именами виртуальных каталогов, указанными в директиве PREFIX DIRECTORY. Если совпадение найдено, система заменит имя каталога значением, указанным в dirpath$.
Чтобы удалить запись виртуального каталога, задайте для dirpath$ нулевую строку.
Пример:
Предположим, вы издали следующую директиву:
Любая ссылка на "*usr/" будет указывать на каталог "/user/mike"; таким образом, доступ к файлу "*usr/tempdata" фактически будет ссылаться на "/user/mike/tempdata".
При желании dirpfx$ может состоять из "*/name.", и в этом случае любой путь, оканчивающийся на name. будет заменено значением в dirpath$. (Эта опция была добавлена в PxPlus 8.30, сборка 9190.)
Читайте также: