Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как программно определить наличие процедуры в другой программе? / 17 сообщений из 17, страница 1 из 1
08.07.2009, 15:07
    #36080061
А. С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно определить наличие процедуры в другой программе?
авторIF FILE('out.prg')
DO out_proc in out.prg
ENDIF
Вопрос: процедуры out_proc в out.prg может и не быть, как отследить и сделать так, чтобы выполнялось только если процедура там есть?
Мне на ум приходит только ON ERROR
...
Рейтинг: 0 / 0
08.07.2009, 15:25
    #36080109
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно определить наличие процедуры в другой программе?
Код: plaintext
IF FILE('out.prg') or FILE('out.fxp')
...
Рейтинг: 0 / 0
08.07.2009, 15:42
    #36080157
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно определить наличие процедуры в другой программе?
Никак, только обработав ошибку.
...
Рейтинг: 0 / 0
08.07.2009, 16:08
    #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
08.07.2009, 16:09
    #36080228
как программно определить наличие процедуры в другой программе?
А если filetostr, потом поиск по словам PROC, FUNC, out_proc и прочий анализ
...
Рейтинг: 0 / 0
08.07.2009, 16:32
    #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
09.07.2009, 09:37
    #36081114
А. С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно определить наличие процедуры в другой программе?
Спасибо, парни! Вот я дурачек, что не додумался до такого простого метода как анализ текста.
...
Рейтинг: 0 / 0
09.07.2009, 09:39
    #36081121
А. С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно определить наличие процедуры в другой программе?
Теперь вопрос следующий, а если это не out.prg а out.exe , то видимо придется отрабатывать ошибку....
...
Рейтинг: 0 / 0
09.07.2009, 10:20
    #36081267
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно определить наличие процедуры в другой программе?
Тогда решение более простое, имя файла = имя процедуры/ф-ии, в этом случае по
set('procedure') получаешь имена файлов.
...
Рейтинг: 0 / 0
09.07.2009, 10:28
    #36081278
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно определить наличие процедуры в другой программе?
2 А. С.

расскажите про свою идею масштабирования Вашего приложения.
я так понимаю, что Вы желаете куда-то зачем-то подкладывать какие-то
модули расширения(обработки) чего-то.
Поверте, за Вас уже все придумано, не изобретайте лисапед.
...
Рейтинг: 0 / 0
09.07.2009, 18:53
    #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
09.07.2009, 19:15
    #36083080
piva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно определить наличие процедуры в другой программе?
Все лисапеды изобретаете ))) AProcInfo тока гуру пользуют :)
Ваще-=то если мне нужен был список чего-то, то список формировался в спец файл в PrоjectHook потом тупо читался этот список из сборки
...
Рейтинг: 0 / 0
09.07.2009, 19:21
    #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
09.07.2009, 20:52
    #36083178
Игорь2004
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно определить наличие процедуры в другой программе?
to Piva
Спасибо информацию, начиная с 7 версии нужно использовать APROCINFO( ).
Я написал свое сообщение для того, чтобы показать, что нельзя просто искать подстроку, делая анализ текста.
APROCINFO работает по приведенному мною алгоритму, ищется слово и предыдущее слово, не учитывая при этом комментарии, конечно.

автор ГЫ

Procedure x1
Proc = 12
....

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

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

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


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