Форум: "Основная";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
Вниз
использование внешней библиотеки Найти похожие ветки
← →
Zilog © (2006-06-20 17:57) [0]из описания к dll:
LONG Test(DWORD dwDevice, DPRTESTMSGPROC msgp, DPRTESTPROGRESS prgp);
я описал процедуру так:function Test(dwDevice : word; msgp : DPRTESTMSGPROC; prgp : DPRTESTPROGRESS) : double; far; stdcall external "mydll.dll";
однако как описать неизветные типы я не понял.
в мануале сказано следующее:typedef void (FAR WINAPI *DPRTESTMSGPROC)(LONG NumErrors,LPTSTR Action,LONG CurrentOffset);
как мне это перевести на делфи?
← →
Джо © (2006-06-20 18:03) [1]
type
TDprTestMsgProc = procedure (NumErrors: Cardinal; Action: PChar; CurrentOffset: Cardinal); stdcall;
если не ошибаюсь...
← →
Джо © (2006-06-20 18:03) [2]
type
TDprTestMsgProc = procedure (NumErrors: Cardinal; Action: PChar; CurrentOffset: Cardinal); stdcall;
если не ошибаюсь...
← →
Desdechado © (2006-06-20 18:10) [3]если не ошибаюсь, и другие типы тебе тоже неизвестны:
LONG - это LONG INT (т.е. Integer), а не Double
DWORD - это DWord, а не Word
да и far не нужен
← →
Ega23 © (2006-06-20 18:24) [4]А вы уверены, что stdcall, а не cdecl?
← →
Джо © (2006-06-20 18:28) [5]> [4] Ega23 © (20.06.06 18:24)
> А вы уверены, что stdcall, а не cdecl?
Дык WINAPI жеж.
← →
Ega23 © (2006-06-20 18:46) [6]
> Дык WINAPI жеж.
И что?LONG Test(DWORD dwDevice, DPRTESTMSGPROC msgp, DPRTESTPROGRESS prgp);
Хочешь сказать, что это всегда stdcall?
(Это не наезд, я с WinAPI мало знаком, просто интересно)...
← →
begin...end © (2006-06-20 18:53) [7]> Ega23 © (20.06.06 18:24) [4]
#define WINAPI __stdcall
← →
Ega23 © (2006-06-20 19:11) [8]
> #define WINAPI __stdcall
Лёш, где здесь WINAPI?LONG Test(параметры);
В параметрах? Ну и пёс с ними, я про саму процедуру Test.
Зачем автор её в Delphi описал как stdcall? Да ещё и как far?function Test(dwDevice : word; msgp : DPRTESTMSGPROC; prgp : DPRTESTPROGRESS) : double; far; stdcall external "mydll.dll";
← →
begin...end © (2006-06-20 19:32) [9]> Ega23 © (20.06.06 19:11) [8]
Тогда сорри. Я думал, у тебя насчёт WINAPI были сомнения.
← →
Джо © (2006-06-21 00:56) [10]> [8] Ega23 © (20.06.06 19:11)
> ...я про саму процедуру Test.
> Зачем автор её в Delphi описал как stdcall? Да ещё и как
> far?
А, я даже не посмотрел выше, только перевел, как понимаю, процедурный тип, так что сорри, не понял твоего вопроса.
← →
Джо © (2006-06-21 00:56) [11]> так что сорри, не понял твоего вопроса.
В смысле, не понял тогда :)
← →
Zilog © (2006-06-21 15:01) [12]Господа знатоки, обьясните, пожалуйста, что я сделал не так.
Описание функции в мануале:
long GetResponseExA(DWORD dwDevice,PCHAR response,UINT maxchar,PCHAR command);
dwDevice Device number.
response Pointer to string buffer to copy the DVC"s response into.
maxchar Maximum characters to copy.
command Pointer to NULL terminated string to be sent to the DVC as a question/command.
Как её описал я:function GetResponseExA(dwDevice : cardinal; responce : pchar; maxchar : cardinal; command : pchar) : cardinal; stdcall external "pcomm32.dll";
вызываю вот так:var resp : pchar;
...
GetResponseExA(0,resp,255,"ver");
ListBox1.Items.Add(resp);
не работает. вернее был один момент, когда сработало, но я, видимо, что-то успел намудрить....
зы. в описании сказано, что параметры response,command - указатели. Пробовал описывать и по другому, при вызове указывая в качестве аргуметов указатели, но тоже не сработало.
← →
Ega23 © (2006-06-21 15:10) [13]
> Как её описал я:
>
> function GetResponseExA(dwDevice : cardinal; responce :
> pchar; maxchar : cardinal; command : pchar) : cardinal;
> stdcall external "pcomm32.dll";
Почему ты опять указываешь stdcall? Где ты его увидел???
Что такое PCHAR и UINT?
← →
Zilog © (2006-06-21 15:18) [14]незнаю где я увидел stdcall, но без него при запуске вываливаешься сразу в дебаггер... а с ним, всего лишь Access Violation... :) (а один-два раза даже работало как-то...)
← →
Zilog © (2006-06-21 15:20) [15]UINT - тип данных, беззнаковое целое число, разрядностью 32-бит
PCHAR - непонятго, то ли это pchar, то ли указатель, судя по мануалу... :(
← →
Desdechado © (2006-06-21 16:31) [16]> responce : pchar
Это, видимо, указатель на память для помещения в него ответа. Выделил ли ты эту память для ответа заранее?
← →
Ega23 © (2006-06-21 16:31) [17]
> PCHAR - непонятго, то ли это pchar, то ли указатель, судя
> по мануалу... :(
Вот разберись сначала, что в твоей библиотеке PCHAR значит.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.014 c