On-line: NickSam, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 35
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.10.06 03:09. Заголовок: Как узнать есть ли функция в программе ?


Всем привет !
А можно ли узнать, есть ли определенная функция в этом exe-нике или нет, т.е.
перед вызовом функции проверять как-то ?
Я сценарий программы храню в ini-файле, и по ходу выполнения программы вызываю
ту или иную функцию.
А если этой функции нет, то программа просто сваливается, а я хочу чтобы не валилась.
Кто знает, подскажите.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 14 [только новые]







Пост N: 66
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 15.10.06 09:41. Заголовок: Re:


cT := Type( cFuncName + '()' )

IF .NOT.( cT == 'UI' .OR. cT == 'UE' )
MsgExclamation( 'Функции нет в EXE' )
endif


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 36
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.10.06 12:02. Заголовок: Re:


Спасибо большое !

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 30
Зарегистрирован: 07.08.06
ссылка на сообщение  Отправлено: 16.10.06 03:10. Заголовок: Re:


Я делаю так (обращаю внимание, что функция type() может вернуть "UI", но функция при этом ЕСТЬ в экзешнике! поэтому условие её ПРИСУТСТВИЯ -- любой тип возврата, за исключениием "U" и "UE"):

local dummyVar
priv someFunc
...
someFunc="testFunc(val1,val2,'stringPar1','stringPar2)"
if ','+type(someFunc)+',' $ ',U,UE,'
msg('Программный код не разработан или отсутствует!')
else
dummyVar = &someFunc
end


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 7
Зарегистрирован: 23.10.06
ссылка на сообщение  Отправлено: 23.10.06 16:18. Заголовок: Re:


ну да) обидно только, если type("xfunc()") сделает ВЫЗОВ этой функции, в то время, как этого не требуется

зы. в какой-то библе от рытова вроде были функции CHECK_SYM и иже с ними

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 32
Зарегистрирован: 07.08.06
ссылка на сообщение  Отправлено: 23.10.06 23:04. Заголовок: Re:


Что-то я не припомню НИ ОДНОГО случая такого самопроизвольного вызова. У меня в исходниках в нескольких местах проверяется наличие ф-ции, отвечающей за действия программы в случае её завершения (эта ф-ция называется "QUITPRG()"). Если бы она вызывалась, то прога тут же бы и завершалась, не успев толком ничего выполнить.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 13
Зарегистрирован: 23.10.06
ссылка на сообщение  Отправлено: 28.10.06 13:23. Заголовок: Re:


type("inkey(0)")

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 417
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.10.06 19:17. Заголовок: Re:


suv пишет:

 цитата:
type("inkey(0)")


этот пример падает с internal error 999

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 52
Зарегистрирован: 06.06.06
ссылка на сообщение  Отправлено: 30.10.06 11:04. Заголовок: Re:


Dima пишет:

 цитата:
этот пример падает с internal error 999


А у меня не падает - результат "N".

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 418
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.10.06 12:33. Заголовок: Re:


ort пишет:

 цитата:
А у меня не падает - результат "N".


у меня Clipper 5.2e

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 53
Зарегистрирован: 06.06.06
ссылка на сообщение  Отправлено: 30.10.06 12:58. Заголовок: Re:


Dima пишет:

 цитата:
у меня Clipper 5.2e


У меня точно такой же!

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 46
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 15.11.06 18:00. Заголовок: Re:


а чем не вариант:

******************************************
FUNC NameIsLinked(cFunc)
LOCAL x,y,result

x:=ERRORBLOCK({||BreakFunc()})
BEGIN SEQUENCE
y := &cFunc // нужно вызвать, полюбому...
result := TRUE // не вылетело по ошибке
RECOVER
result := FALSE // был вылет по ошибке
END SEQUENCE

ERRORBLOCK(x) // восстанавливаем станд.обработчик
RETURN result
***************************
FUNC BreakFunc()
BREAK
RETURN
***************************
не тестировал, но общий смысл, надеюсь, понятен.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 241
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.11.06 18:35. Заголовок: Re:


А если совсем не нужно вызывать функцию, а лишь узнать, имеется она или нет?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 14
Зарегистрирован: 22.03.06
ссылка на сообщение  Отправлено: 16.11.06 10:58. Заголовок: Re:


Григорьев Владимир пишет:

 цитата:
А если совсем не нужно вызывать функцию, а лишь узнать, имеется она или нет?



Можно воспользоваться функциями FIRSTSYM и NextSym
из библиотеки USERLIB файл NEXTSYM.C

 цитата:
/* Автор: Алексей Рытов, г. Ленинград, 1991
Тема: Использование недокументированных функций CLIPPER 5.0
Раздел: Таблица символов
Функция: Просмотр таблицы символов
*/



или же функция SymInfo оттуда же


 цитата:
Назначение: По имени символа получить строку, характеризующую
использование этого символа в программе.

Вызов: SymInfo( cName ) -> cInfo

Параметры: cName - строка имени символа

Результат: Строка, составленная из символов, отражающих использова-
ние имени cName в CLIPPER-программе:

'F' - имя поля,
'A' - имя рабочей области
'm' - имя PRIVATE-переменной
'M' - имя PUBLIC-переменной
'P' - имя процедуры.

В файле: SYMINFO.C



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 28
Зарегистрирован: 27.04.06
ссылка на сообщение  Отправлено: 16.11.06 16:32. Заголовок: Re:


А где эта библиотека USERLIB, автор: Алексей Рытов ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 107
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет