Как узнать имя EXEшника?

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Для сбора статистики требуется узнать собственное имя программы.
Функция path() выдает только путь. Подскажите что делать.
Clarion 2.1
aiv_stw@rambler.ru
Заранее благодарен.
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

command
Написал: PAA(27)
Гость

Сообщение Гость »

Можно подробнее. Что такое command и как его использовать.
Есть функция COMMAND_LINE() в модуле DOS1.BIN, но она выдает только параметры запуска без названия EXE шника.
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

ПРОЦЕДУРЫ И ФУНКЦИИ ДОС

Код: Выделить всё

COMMAND                                       (командная строка)
             COMMAND(флаг[,операция])

флаг         Строковая константа или переменная, содержащая  ис-
             комый  параметр  или  номер  параметра  в командной
             строке.

операция     Целочисленная константа или переменная в  диапазоне
             от 0 до 3. Если пропущена, то по умолчанию 0.

Функция COMMAND возвращает значение параметра ФЛАГ из  командной
строки, файла конфигурации  или переменной окружения.  Если ФЛАГ
не найден,  COMMAND возвращает  пустую строку.  Если ФЛАГ описан
многократно, то возвращается его первое значение.

ОПЕРАЦИЯ указывает где искать:

       3      в командной строке
       2      в файле конфигурации
       1      в окружении
       0      во всех трех предыдущих, в порядке 3-2-1

COMMAND ищет выраженние ФЛАГ=VALUE и возвращает VALUE. Не должно
быть пробелов между ФЛАГОМ, знаком равенства и VALUE. Из  конфи-
гурационного файла или окружения возвращается все, что находится
справа от знака равенства. VALUE, получаемое из командной строки
считывается до первой запятой или пробела. Если пробел или запя-
тая являются значением ФЛАГА, то все, что стоит справа от  знака
равенства, должно заключаться в двойные кавычки (ФЛАГ="VALUE").

Также, COMMAND ищет в командной строке ФЛАГ, перед которым стоит
слэш (/).  Если такое  найдено, то  COMMAND возвращает  значение
ФЛАГА без  слэша. Если  ФЛАГ содержит  только число,  то COMMAND
возвращает параметр командной тсроки, номер которого  содержится
в ФЛАГЕ. Если ФЛАГ - пустая строка ('') и ОПЕРАЦИЯ=3, то возвра-
щается вся командная строка, к которой добавлен ведущий пробел.

Файл конфигурации позволяет подстраивать программу во время  ис-
полнения. Это текстовй файл, который содержит любые желаемые па-
раметры, которые имют смысл во время исполнения. Каждый параметр
должен занимать отдельную строку. По умолчанию, имя файла конфи-
гурации, это  имя программы,  к которой  этот файл  относится, с
расширением .INI. Это имя можно изменить из командной строки па-
раметром CLAINI=новое_имя_фалй. CLAINI не утанавливается  коман-
дой SETCOMMAND.

Возвращаемый тип данных:  STRING

Пример:

C:\>MYPROG CLAVM="EMS ... 16,3,6"
                   !Параметр в командной строке содержит запятые

C:\>MYPROG CLAINI=INITFILE.INI
                      !Вместо MYPROG.INI используем INITFILE.INI

  RUN(COMMAND('COMSPEC',1) & '/C DIR /P')
                             !Находим местоположение command.com
                             ! и выполняем команду ДОС

  IF COMMAND('/N',3)                !В командной строке есть /N?
    DO SomeProcess
  .

  IF UPPER(COMMAND('CLAVM',0)) = 'OFF'
                        !Неужели виртуальная память отключена?
    DO NoVirtualMem     ! ну тогда придется обойтись без нее :-(
  ELSE
    DO VirtualMem       ! делаем нечто, интенсивно использущее
           !  память.
  .

  CommandString = COMMAND(",3)    !Получаем всю командную строку

  SecondParm = COMMAND('2'.3)
                   !Получаем из командной строки второй параметр
************************************************************
вообщем тебе надо CommandString = COMMAND(")


текст взят из известной документации Агаркова для CPD
Написал: PAA(27)
Гость

Сообщение Гость »

Спасибо за описание функции command, но Clarion 2.1 выдает такое сообщение:
Error 56 :'COMMAND' IS NOT A FUNCTION
str"=COMMAND('',3)
^
Может у меня версия урезанная?
Если кто может, кинте на aiv_stw@rambler.ru библиотеку или двоичный модуль.
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

А разве в Clarion 2.1 под ДОС была команда COMMAND ???
Мне что то кажется что нет...
Может попробовать прочитать описание функции COMMAND_LINE()
Есть ли параметры которые ей можно передать?
Написал: Mixer(144)
Гость

Сообщение Гость »

Описание функции COMMAND_LINE() неизвестно, модуль то двоичный.
А методом "тыка" пробовал, не помогло.
Можно попробовать самому на Си написать модуль.
Ответить