Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
FLL
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, подскажите пожалуйта что нужно сделать: делается FLL для VFP 7.0 в Visual C 6.0 из примеров MSDN При компиляции идет все нормально при подключении тоже, а при выполнении ? REPLTOMH('D' , 2) выдается сообщение "API call caused an exception" winapims.lib размером 85284 и датой создания 15.06.01 00:38 atls.lib 932792 и 05.01.02 15:17 (в поставке не нашел нашел его у знакомых) pro_ext.h 37485 и 13.03.01 23:04 #include "pro_ext.h" // Replicate char argument to memory allocated with _AllocHand(). // Return the memory handle to Visual FoxPro. void FAR replToMH(ParamBlk FAR *parm) { char FAR *rep; char c = *(char *) _HandToPtr(parm->p[0].val.ev_handle); MHANDLE mh; if ((mh = _AllocHand((int) parm->p[1].val.ev_long + 1)) == 0) { _Error(182); // "Insufficient memory" } _HLock(mh); rep = _HandToPtr(mh); _MemFill(rep, c, (int) parm->p[1].val.ev_long); rep[parm->p[1].val.ev_long] = '\0'; // null terminate _HUnLock(mh); _RetInt(mh, 10); } // Returns characters in memory handle. // Argument in call from Visual FoxPro // must be a valid Visual FoxPro memory handle. void FAR MHToFoxString(ParamBlk FAR *parm) { char FAR *string; MHANDLE mh = parm->p[0].val.ev_long; _HLock(mh); string = _HandToPtr(mh); _RetChar(string); _HUnLock(mh); } // Frees memory handle. Argument in call from // Visual FoxPro must be a valid // Visual FoxPro memory handle. void FAR freeMH(ParamBlk FAR *parm) { _FreeHand((MHANDLE) parm->p[0].val.ev_long); } FoxInfo myFoxInfo[] = { {"REPLTOMH", (FPFI) replToMH, 2, "C,I"}, {"MHTOFOX", (FPFI) MHToFoxString, 1, "I"}, {"FREEMH", (FPFI) freeMH, 1, "I"}, }; FoxTable _FoxTable = { (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 15:28 |
|
||
|
FLL
|
|||
|---|---|---|---|
|
#18+
Попробовал, все компилируется и выполняется без ошибок. Данная ошибка появляется только при вызове MHTOFOX() с указанием несуществующего MHandle. Т.е. при соблюдении порядка вызовов: Код: plaintext 1. 2. все работает. Встречный вопрос, а зачем все это нужно? Зачем нужен MHandle переменной на уровне фокса? Или я чего-то не понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 16:45 |
|
||
|
FLL
|
|||
|---|---|---|---|
|
#18+
Вот рабочий вариант: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 17:06 |
|
||
|
FLL
|
|||
|---|---|---|---|
|
#18+
To XAndy: Фокс работает с дискрипторами памяти , а не с указателями, а это совершенно 2 различных структуры памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 17:21 |
|
||
|
FLL
|
|||
|---|---|---|---|
|
#18+
To MSDN: Да уж понятно, что дескриптор это не адрес памяти. Вопрос был в другом, зачем на практике может понадобиться такой экзотичный способ доступа к участку памяти? Если нужно создать фоксовскую переменную из API-библиотеки, то есть специальная функция _NewVar( ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 18:34 |
|
||
|
FLL
|
|||
|---|---|---|---|
|
#18+
Глянь, может твой случай http://support.microsoft.com/default.aspx?scid=kb;en-us;198130 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 10:36 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32473951&tid=1596834]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 390ms |

| 0 / 0 |
