powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Входящие парметры при запуске программы
6 сообщений из 6, страница 1 из 1
Входящие парметры при запуске программы
    #32341784
iwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте все!
В стартовом модуле пишу param x1
При вызове с параметром переменная х1 получает некоторое значение.
Если программа вызвана без параметров, то х1 имеет тип логический и
ей по умолчанию присвоено .f.

Если я использую функцию param(), то она мне всеравно показывает, что
программа вызвана с параметром, хотя этого нет. А при проверке типа х1
выдается ошибка- несответствие типов.

Моя задача сделать так, что если параметров нет, то действие-1, если
параметр передан, то в зависимости от его значение следующая последовательность действий.

Подскажиет как сделать правильно!

Заранее всем спасибо.
...
Рейтинг: 0 / 0
Входящие парметры при запуске программы
    #32341808
Por
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Por
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
procedure main()
    lparameters m.lcValue1, m.lnValue2, m.ldValue3
    
    m.lcValue1 = iif(vartype(m.lcValue1)# "C" , "",m.lcValue1)
    m.lnValue2 = iif(vartype(m.lnValue2)#" N ",0 ,m.lnValue2)
    m.ldValue3 = iif(vartype(m.ldValue3)#"D",{},m.ldValue3)
   
   do case
        case pcount() =  3 
           *!* Do something
        case pcount() =  2 
           *!* Do something
        case pcount() =  1 
           *!* Do something
        otherwise
           *!* Do something
   endcase
  
   .....

endproc
...
Рейтинг: 0 / 0
Входящие парметры при запуске программы
    #32341843
Brather
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если написать вот так:
procedure main()
lparameters m.lcValue1, m.lnValue2, m.ldValue3

m.lcValue1 = iif(type('m.lcValue1')#"C","",m.lcValue1)
m.lnValue2 = iif(type('m.lnValue2')#"N",0,m.lnValue2)
m.ldValue3 = iif(type('m.ldValue3')#"D",{},m.ldValue3)
do case
case parameters() = 3
*!* Do something
case parameters() = 2
*!* Do something
case parameters() = 1
*!* Do something
otherwise
*!* Do something
endcase
endproc
===========
тест на 7.0 пройден успешно
...
Рейтинг: 0 / 0
Входящие парметры при запуске программы
    #32341868
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вариант:

LPARAMETERS par1

IF TYPE("m.par1")="L"
* значение параметра par1 либо не передано, либо передано неверно
ENDIF

Функция PARAMETERS() отличается от функции PCOUNT() тем, что PARAMETERS() возвращает количество переданных параметров в последней вызванной функции. А PCOUNT() всегда возвращает количество параметров переданное в текущую функцию.

Выполни такую тестовую программку

do Prog1 with 1,2,3

PROCEDURE Prog1
LPARAMETERS par1, par2, par3

?'PARAMETERS()=',PARAMETERS()
?'PCOUNT()=',PCOUNT()

DO Prog2 with 1

?'PARAMETERS()=',PARAMETERS()
?'PCOUNT()=',PCOUNT()

RETURN

PROCEDURE Prog2
LPARAMETERS par1
RETURN

В реузльтате ты получишь значения

PARAMETERS()=3
PCOUNT()=3
PARAMETERS()=1
PCOUNT()=3
...
Рейтинг: 0 / 0
Входящие парметры при запуске программы
    #32349009
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
if empty(x1)
параметра нет!
endif
...
Рейтинг: 0 / 0
Входящие парметры при запуске программы
    #32349218
Yura .
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ниже приведен текст функции, который я использую в качестве заготовки при создании новых PRG-файлов. Остается немного его отредактировать, если нужно, что бывает редко, и сразу приступить к написанию самой функции как таковой.

**********************************************************
FUNCTION PRIMER
**********************************************************
* 2003.12.00.0.9.0014 EXAMPLE = PRIMER('START')
**********************************************************
PARAMETERS P00, P01, P02, P03, P04, P05, cRegi, mRegi, cAnsw
cRegi = IIF(TYPE('P00') ='C', UPPER(ALLTRIM(P00)), '')
mRegi = IIF(TYPE('P01') ='C', UPPER(ALLTRIM(P01)), '')
STORE '' TO cAnsw
DO CASE
CASE LEN (cRegi) < 3
= MESSAGEBOX (PROGRAM() + STR(LINE()) + ' ERROR REGIME = '+ cRegi)
RETURN '-1'
CASE cRegi == 'RELEASE'
RETURN '0014.0000; Author ......'
CASE INLIST (cRegi, 'START')
CASE .T.
= MESSAGEBOX (PROGRAM() + STR(LINE()) +' ERROR K='+ cRegi )
RETURN '-1; ERROR REGIME = '+ cRegi +' '+ PROGRAM() + STR(LINE())
ENDCASE
RETURN cAnsw
**********************************************************
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Входящие парметры при запуске программы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]