powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Неопределнная ошибка в связке FLL+VFP
6 сообщений из 6, страница 1 из 1
Неопределнная ошибка в связке FLL+VFP
    #32324192
Гость_777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди!
Подскажите пожалуйста, как мне из библиотеки (FLL или DLL) дернуть метод объекта.
Делаю так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Fox:
define class oSVR as custom
cBuffer = ''
Procedure EV_RXFLAG
this.cBuffer = GetData()
EndProc
Procedure Init
Public oOBJ
oOBJ = (this)
=StartConecnt() && Тут запускается  поток который при возникновении собитий 
                &&  выполнит мне EV_RXFLAG
EndProc
Enddefine

С++: Это код потока
.....Что-то там происходит
char buff[255];
while (!ExitAllThread)
{
...
тут в buff уже лежит то что надо.
_Execute("oOBJ.EV_RXFLAG()\0");
}
А это функция которая у нас в фоксе называется GetData()

void getcurrdata(ParamBlk FAR *parm)
{
#define p0 (parm->p[0].val)
int indexport;
Value val;
indexport = p0.ev_long;
val.ev_type = 'C';
val.ev_length = CPort[indexport].lendata;
val.ev_handle = _AllocHand(val.ev_length);
_HLock(val.ev_handle);
_MemMove((char *) _HandToPtr(val.ev_handle ),(volatile) CPort[indexport].buff,val.ev_length);
_HUnLock(val.ev_handle);
_RetVal(&val);
}


Но дело в том что при n-м количестве выполнений данный код вызывает
неопределенную ошибку. В чем дело-то? Может кто сталкивался ?
...
Рейтинг: 0 / 0
Неопределнная ошибка в связке FLL+VFP
    #32324382
Я не увидел в конце функции getcurrdata
команды _FreeHand(val.ev_handle);
Из-за этого могут быть ошибки
...
Рейтинг: 0 / 0
Неопределнная ошибка в связке FLL+VFP
    #32327040
Гость_777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет. Не помгло, хотя "полегчало" проге заметно.
Если не трогать главное окно проиложения, то все работает нормально.
Но как только пробовать открыть дочернее окно или даже просто попробовать форме выполнить ресайз возникает ошибка "нарушение вызова popjmp/pushjmp". И что это такое ? Как бороть ? Как я понимаю что-то со стеком приложения происходит. Так я память кореекно выделю под нужды и коректно очищаю. Может проблема в том что обмен даннми веду через глобальный буфер который один для всех процессов, так от у меня тож структурой образован. Для каждого потока свой член. Есть рассуждения на тему ?
...
Рейтинг: 0 / 0
Неопределнная ошибка в связке FLL+VFP
    #32327095
Я бы сделал не возврат значения функции, а через параметр по ссылке
типа этого:
Код: plaintext
1.
2.
3.
4.
5.
Procedure EV_RXFLAG
this.cBuffer = MAX_DATA_LENGTH
this.nBufferLength = GetData(@this.cBuffer)
...
EndProc
...
Рейтинг: 0 / 0
Неопределнная ошибка в связке FLL+VFP
    #32329708
Гость_777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И так пробовал и так. Проблема не в этом.
Приложение "падает" после некоторого количества выполнений
MyObject.EV_RXFLAG(). Причем, ошибка "висит", но обмен данными идет
и что самое удивительное правильно идет.
...
Рейтинг: 0 / 0
Неопределнная ошибка в связке FLL+VFP
    #32329714
Гость_777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вообще, Fox поддерживает многопоточность ?
Возможно ли одновременное выполнение одинаковых методов 2
различных экземпляров 1 класса ?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Неопределнная ошибка в связке FLL+VFP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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