Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Трабл 575 ? / 4 сообщений из 4, страница 1 из 1
31.07.2003, 18:30
    #32224313
Flex2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трабл 575 ?
Уважаемые господа, буду признателен за ответы.
Есть функция в FLL, она принимает 3 параметра:
1 - строка
2 - объект
3 - строка
С 1 и 3 проблем нет. А вот 2 параметр вызывает некоторые вопросы.
Фокс передал - FLL получила, все очевидно и понятно, но только вот
дело в том что при записи нового значения в свойсво этого объекта (существующее), мне функция _SetObjectProperty... выдает код внутренней ошибки фокса 575. А это "Object name is invalid.", но какой же инвалид) если я пихаю вторым параметром (thisform). Может я что-то упускаю , подскажите плииз?
...
Рейтинг: 0 / 0
08.08.2003, 14:39
    #32231246
cbani1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трабл 575 ?
Помоему если ты хочеш найти ответ ты должен выяснится яснее, а может быть даже вставить шмат кода чтобы люди поняли что конкретно у тебя не пашет.
...
Рейтинг: 0 / 0
08.08.2003, 18:00
    #32231566
Flex2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трабл 575 ?
Хорошо. Нужно подробней, будет подробней.
Проблема: Программулина на фоксе читает некоторые данные из COM - порта,
чтение производится асинхронное при возникновении собития прихода байта во входной буффер порта. Механизм ожидания собитий и чтения в буфер данных реализован в потоке. Сама проблема состоит в том что при попытке
записать эти данные в некоторое свойство формы.
Теперь елементы кода:

Этот код выполняется:
Код: 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.
FoxAPI:

void change(ParamBlk FAR *parm)
{
#define p0 (parm->p[ 0 ].val) 

    Value val;
   int   status;
// Для примера запишем  9  байт
   char * szBuf=malloc( 10 );  
   memmove(szBuf, "123456789 ", 10 );

 _MemFill(&objct, 0 ,sizeof(Value));
   objct = p0;

  if (objct.ev_type == 'O')
 {
_MemFill(&val, 0 ,sizeof(Value));
val.ev_type = 'C';
val.ev_length  = strlen(szBuf);
val.ev_handle = _AllocHand(val.ev_length);
_HLock(val.ev_handle);
_MemMove((char *) _HandToPtr(val.ev_handle ),szBuf,val.ev_length);
_HUnLock(val.ev_handle);

  if (!(status= _SetObjectProperty(&objct,  "MyProperty" , &val,  0 ))) _RetInt( 1 , 10 );
else  _RetInt( 0 , 10 );

}

Fox:
Код: plaintext
= change(thisform)

Ясное дело, что связка функций С++ и и имени функции в фоксе определена и равозначна.

А вот этот код не рабочий:

Глобальные объявления для процесса:
Код: plaintext
1.
	Value  objеct;
	BOOL ExitAllThread = FALSE;

Элементы поточной функции:

Код: 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.
void DataWaitingAsync(void* pParams)
{
 char szBuf[ 254 ];
 Value val;

 while (!ExitAllThread)
{

// Тут прочитали в szBuf(не важно как и что, но что там гарантированно 
//лежит то что надо проверено и сомнений не вызывает)

if (objct.ev_type == 'O')
 {
_MemFill(&val, 0 ,sizeof(Value));
val.ev_type = 'C';
val.ev_length  = strlen(szBuf);
val.ev_handle = _AllocHand(val.ev_length);
_HLock(val.ev_handle);
_MemMove((char *) _HandToPtr(val.ev_handle ),szBuf,val.ev_length);
_HUnLock(val.ev_handle);

  if (!(status= _SetObjectProperty(&object,  "MyProperty" , &val,  0 ))) 
 _Execute( "oApp.MyEvent('OK')\0 ");
else  _Execute( "oApp.MyEvent('BAD')\0 ");
}
}
ExitThread( 0 );
}


Элементы функции инита потока:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
void InitPort(ParamBlk FAR *parm)
{
#define p0 (parm->p[ 0 ].val)  
unsigned long uThrID;	
HANDLE hThr;

_MemFill(&objеct, 0 ,sizeof(Value));
objеct = p0;

hThr=CreateThread(NULL, 0 ,(LPTHREAD_START_ROUTINE)DataWaitingAsync,NULL, 0 ,&uThrID);
}

Fox:
Код: plaintext
 = InitPort(thisform)

Причем, object - является объектом, но запись в свойсво не производится.
Надеюсь описал проблему более чем подробно.

За помощь буду признателен.
...
Рейтинг: 0 / 0
12.08.2003, 10:54
    #32233689
Flex2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трабл 575 ?
Спасибо, разобрался.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Трабл 575 ? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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