Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема с передачей параметров в DLL
|
|||
|---|---|---|---|
|
#18+
Возникла проблема с использованием библиотеки dll. Функциям из библиотеки в качестве одного из параметров передается функция из вызывающей программы, эту функцию вызывает библиотека после выполнения команды. И передает в нее результат работы в структуре rtd. На Delphi это выглядит так: TMathFunc = procedure(const rt:RetData)stdcall; procedure PrinterResults(const rt:RetData)stdcall; function DisplayTextLL(hWin:HWND;fun:TMathFunc;par:LPARAM;int1:STRING):integer;stdcall ; external 'fpl.dll' name 'DisplayTextLL'; //Формат структура rtd: type RetData = record Count: integer ; CmdCode: integer ; UserData: integer ; Status: integer ; CmdName: PChar ; SendStr: PChar ; Whole: PChar ; RetItem: array [1..20] of PChar ; OrigStat: array [1..6] of byte ; end; procedure PrinterResults(const rt:RetData )stdcall; begin ……………… ……………… ……………… end ; procedure TForm1.Button1Click(Sender: TObject); begin DisplayTextLL(0,PrinterResults,0,’Текст……….'); end; Как такое сделать на FoxPro ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2004, 18:30 |
|
||
|
Проблема с передачей параметров в DLL
|
|||
|---|---|---|---|
|
#18+
Hi Val_E! Напрфмую - никак. Фокс не поддерживает Callback-вызовы. Пиши не простую dll, а dll с использованием FoxAPI - там можно через _Execute() или _Evaluate() вызвать любую фоксовую функцию. Описание FoxAPI имеется в хелпе фокса. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 02:22 |
|
||
|
Проблема с передачей параметров в DLL
|
|||
|---|---|---|---|
|
#18+
Там вроде мы в описании _Execute() и _Evaluate() микрософт просит , чтобы их не вызывали в обработчиках событий. Я пробовал делать вызов фоксовской функции через _Execute() и _Evaluate() , работает, но временами валится. ДА и с передачей параметров при вызове не очень удобно. Допустим если нужно передать в качетсве параметра значение переменной , то всю строку с именем функции нужно формировать руками, а уже потом подсовывать ее в качетсве аргумента для _Execute(). Можно сделать по другому. Создать в фоксе COM объект, описать там класс с одной функцией. Потом соответсвенно в библиотеке FLL или DLL сделать # import, получить указатель на интерфейс класса и в потоке вызывать его. Тогда и с параметрами попроще, можно любые педевать. И поздним связыванием можно свзяать с фоксовским классом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 09:31 |
|
||
|
Проблема с передачей параметров в DLL
|
|||
|---|---|---|---|
|
#18+
Напрфмую - никак Жаль. Придется что-то придумывать, или писать на чем-то другом. Спасибо что подсказали куда копать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 10:54 |
|
||
|
Проблема с передачей параметров в DLL
|
|||
|---|---|---|---|
|
#18+
Hi -ноль-! Там вообще много вопросов - например как я понял, изначально это многопоточный компонент, а вызвать _Execute из разных потоков IMHO нельзя... Если же это "синхронный" метод - то вообще нету смысле чего-то вызывать "в конце". А если асинхронный - ну тогда надо проверять - будет ли оно вообще работать - не заблокирует ли фокс такой вызов... Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 00:42 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32840209&tid=1595163]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 403ms |

| 0 / 0 |
