Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не найдена библиотека / 12 сообщений из 12, страница 1 из 1
20.05.2013, 12:32
    #38264310
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
Есть проект. В него входит библиотека utility.vcx. Построен app. При работе проекта вызывается внешняя форма. Для работы формы треюуется utility.vcx В formset.init пишу: Set classlib to utility addi.

В ответ: classlib not found.
...
Рейтинг: 0 / 0
20.05.2013, 13:06
    #38264396
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
glamis,

либа добавлена в проект? ошибка на этапе отладки или в экзешнике? (если первое - а путь к либе фоксу на момент выполнения известен?)
...
Рейтинг: 0 / 0
20.05.2013, 13:09
    #38264405
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
tanglir,

на этапе исполнения.
...
Рейтинг: 0 / 0
20.05.2013, 13:20
    #38264421
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
Если VCX внутри EXE а форма снаружи, то из формы Set classlib to utility не сработает. Это надо сделать внутри EXE а в форме просто пользоваться.

Суть следующая: файлы закомпилированные внутрь EXE (или APP) не видны из кода запускаемого из внешних модулей.
...
Рейтинг: 0 / 0
20.05.2013, 13:35
    #38264453
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
Как вариант в процедурный файл закомпилированный внутрь EXE вставить функцию:
Код: sql
1.
2.
3.
func MyNewObject
lpara tcClass, tcLib
return NewObject(tcClass, tcLib)



Из внешнего кода пользовать MyNewObject()
...
Рейтинг: 0 / 0
20.05.2013, 14:06
    #38264514
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
Dima T,

Вставил в проект:

******Progr _myAddLib
lpara _lib
set classlib to (_lib) addi


В форме:
=_myAddlib('utility')

Не помогло
...
Рейтинг: 0 / 0
20.05.2013, 14:09
    #38264520
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
glamisНе помогло
Прям так и написано "Не помогло" ? Ошибка какая, в каком месте кода?
если ты сделал _myAddLib.prg то это не поможет, т.к. это файл внутри проекта и точно так же недоступен извне.
...
Рейтинг: 0 / 0
20.05.2013, 14:13
    #38264527
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
допустим у тебя есть свой процедурный файл MyProc.prg
где-то при старте он подцепляется
Код: sql
1.
set proc to MyProc


вот в него надо добавить
Код: sql
1.
2.
3.
4.
func _myAddLib
lpara _lib
set classlib to (_lib) addi
return
...
Рейтинг: 0 / 0
20.05.2013, 14:25
    #38264552
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
glamis

Все библиотеки практичнее собрать в одной директории и в проекте подключать их сразу после SET PATH TO одной командой SET CLASSLIB TO через запятые.
Опцией ADDITIVE пользоваться когда в ней действительно есть необходимость.

Если только какой-то класс из библиотеки нужен только для конкретной формы, то можно его установить на форму на этапе проектирования как объект.
Или подключать в форме с помощью ADDOBJECT/CREATEOBJECT/NEWOBJECT как свойство формы.

И вообще, что у вас находится в библиотеке utility.vcx, для чего она нужна форме?
Сами собственно утилиты практичнее собрать все в один глобальный класс и подключать его сразу к goApp.
Тогда морока с процедурными вызовами процедур у вас исчезнет.
...
Рейтинг: 0 / 0
20.05.2013, 14:38
    #38264576
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
Dima T,

Все она находит. wait выдает, что биб-ка есть. А класс не строится - пишет error instaled. Classib not found

my_addclasslib('utility')
WAIT WINDOW IIF('UTILITY' $ SET('classlib'),'Библиотека есть','Библиотеки нет') TIMEOUT 5
This.AddObject('Menulib1','Menulib')
...
Рейтинг: 0 / 0
20.05.2013, 15:14
    #38264643
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
Dima T,

помогло:
_myAddClassLib
_myNewObject
...
Рейтинг: 0 / 0
20.05.2013, 15:24
    #38264661
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не найдена библиотека
glamisDima T,

помогло:
_myAddClassLib
_myNewObject
Я NewObject() использую. Для NewObject() не надо set classlib делать.
Там второй параметр название библиотеки.
Еще третий параметр есть
Код: sql
1.
2.
cInApplication 
Specifies the Visual FoxPro application (.exe or .app) containing the .vcx file you specify with cModule. You must include an extension for the application. CInApplication is ignored if cModule is omitted, or if cInApplication is the empty string or the null value.


т.е. тут при вызове в форме имя EXE указать.
Попробуй, может и не надо никаких _myNewObject()
Правда я отказался от указания имени EXE в NewObject() т.к. отлаживать не удобно, EXE надо пересобирать если класс поправил. И ошибки не очень удобно ловить. Поэтому использовал _myNewObject() как выше писал.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не найдена библиотека / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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