powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как программно определить наличие процедуры в другой программе?
17 сообщений из 17, страница 1 из 1
как программно определить наличие процедуры в другой программе?
    #36080061
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторIF FILE('out.prg')
DO out_proc in out.prg
ENDIF
Вопрос: процедуры out_proc в out.prg может и не быть, как отследить и сделать так, чтобы выполнялось только если процедура там есть?
Мне на ум приходит только ON ERROR
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36080109
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
IF FILE('out.prg') or FILE('out.fxp')
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36080157
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак, только обработав ошибку.
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36080226
Rickitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А. С.,
Код: plaintext
1.
2.
3.
4.
if file(out.prg)
 if atc('out_proc', FILETOSTR(out.prg))> 0 
  do out_proc
 endif
endif
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36080228
А если filetostr, потом поиск по словам PROC, FUNC, out_proc и прочий анализ
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36080293
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как альтернатива - использование ООП

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
loOutputer = CreateObject("pp1")
? "------------------"
? loOutputer.checkIsMethod("out")

loOutputer = CreateObject("pp2")
? "------------------"
? loOutputer.checkIsMethod("out")


Define Class pp1 as Custom

	Procedure checkIsMethod
		Lparameters tcMethodName
		Return Iif( PemStatus(this, tcMethodName,  5 ) ;
		          , "Есть метод " + tcMethodName     ;
		          , "Нет такого!")
EndDefine 

Define Class pp2 as Custom

	Procedure out
		* что-то делаем
	EndProc

	Procedure checkIsMethod
		Lparameters tcMethodName
		Return Iif( PemStatus(this, tcMethodName,  5 ) ;
		          , "Есть метод " + tcMethodName     ;
		          , "Нет такого!")

EndDefine 
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36081114
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, парни! Вот я дурачек, что не додумался до такого простого метода как анализ текста.
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36081121
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь вопрос следующий, а если это не out.prg а out.exe , то видимо придется отрабатывать ошибку....
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36081267
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда решение более простое, имя файла = имя процедуры/ф-ии, в этом случае по
set('procedure') получаешь имена файлов.
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36081278
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 А. С.

расскажите про свою идею масштабирования Вашего приложения.
я так понимаю, что Вы желаете куда-то зачем-то подкладывать какие-то
модули расширения(обработки) чего-то.
Поверте, за Вас уже все придумано, не изобретайте лисапед.
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36083049
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
анализ текста можно производить в исходном prg файле, нужно искать не подстроку, а слово с именем процедуры,
предыдущее слово в нижнем регистре должно быть одним из следующих "proc", "proce", "proced", "procedu", "procedur", "procedure")
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Function DoesProcExist
   **  2009 - 07 - 08  Igor Nikiforov
   ** tcProcName is a procedure name
   ** this function looks for a procedure  in the program file specified with tcProgName
   ** returns .t. if the procedure exists
   ** getnumword is a function from St_Denis library
   ** ftp://ftp-developpez.com/nikiforov/udfs/st_denis_russian.zip  
   Lparameters tcProcName, tcProgName
   Local lcStrCode, lcDel, lnOccurrence, lnNumWord 
   If Type("tcProcName") == "C"
      If Type("tcProgName") == "C"
         If File(tcProgName)
            Store  1  To lnOccurrence,  lnNumWord
            lcDel = Space( 1 )+[;]+Chr( 9 )+Chr( 10 )+Chr( 13 )
            lcStrCode = Filetostr(tcProgName)
            Do While .Not.Empty(lnNumWord)
               lnNumWord =  getnumword(lcStrCode, tcProcName, lcDel, lnOccurrence,  1 )
               lnOccurrence  = lnOccurrence +  1 
               If lnNumWord >  1 
                  If Inlist(Lower(Getwordnum(lcStrCode, lnNumWord -  1 , lcDel)), "proc", "proce", "proced", "procedu", "procedur", "procedure")
                     Return .T.
                  Endif
               Endif
            Enddo
         Endif
      Endif
   Endif
   Return .F.
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36083080
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все лисапеды изобретаете ))) AProcInfo тока гуру пользуют :)
Ваще-=то если мне нужен был список чего-то, то список формировался в спец файл в PrоjectHook потом тупо читался этот список из сборки
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36083089
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь2004
If Inlist(Lower(Getwordnum(lcStrCode, lnNumWord - 1, lcDel)), "proc", "proce", "proced", "procedu", "procedur", "procedure")
....
Endif
Return .F.[/src]

ГЫ
Код: plaintext
1.
2.
3.
Procedure x1
Proc =  12 
....
Савсем не запрещенная конструкция
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36083178
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Piva
Спасибо информацию, начиная с 7 версии нужно использовать APROCINFO( ).
Я написал свое сообщение для того, чтобы показать, что нельзя просто искать подстроку, делая анализ текста.
APROCINFO работает по приведенному мною алгоритму, ищется слово и предыдущее слово, не учитывая при этом комментарии, конечно.

автор ГЫ

Procedure x1
Proc = 12
....

Савсем не запрещенная конструкция
данная реплика осталась мне непонятной ?
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36083263
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно, piva имел ввиду, что переменные также могут иметь имена, схожие с указанием на процедуру.
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36083270
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
Вероятно, piva имел ввиду, что переменные также могут иметь имена, схожие с указанием на процедуру.
Безусловно, могут и не только переменные, хотя это не рекомендуется делать.
Но мне осталость непонятным, что именно вызвало улыбку monsieur piva ?
...
Рейтинг: 0 / 0
как программно определить наличие процедуры в другой программе?
    #36084022
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pivaВсе лисапеды изобретаете ))) AProcInfo тока гуру пользуют :)
Ваще-=то если мне нужен был список чего-то, то список формировался в спец файл в PrоjectHook потом тупо читался этот список из сборки

Вадик, какие лисапеды.

AprocInfo работает только в Design Time.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как программно определить наличие процедуры в другой программе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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