![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Delphi programs in API.
На английском. Очень подробно всё описано, плюс есть исходные коды готовых юнитов. Например SmallUtil, в котором есть все частоиспользуемые подпрограммы, и который в размере меньше, чем SysUtils (автор так утверждает - я не проверял). |
![]() ![]() |
Siberian GRemlin |
![]()
Сообщение
#2
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Сегодня у меня был очередной сеанс мозгофилии.
Пример из InnoSetup (описание внешней процедуры в IS) CODE procedure MyDllFuncSetup(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal); external 'MyDllFunc@files:MyDll.dll stdcall'; Пример из InnoSetup (описание процедуры в Delphi) CODE procedure MyDllFunc(hWnd: Integer; lpText, lpCaption: PAnsiChar; uType: Cardinal); stdcall; begin MessageBoxA(hWnd, lpText, lpCaption, uType); end; Меня удивила разница в типе параметров - строка и явный указатель. Проверил, работает. И действительно, на стороне DLL получаем не строку, а указатель. Далее самое главное, на стороне своей DLL я работаю с интерфейсом из другой DLL и его параметры изменить не могу, а там используется указатель на другой тип. CODE Reader.Open(PWideChar(FileName)); где FileName: String;Если работать с диалогами и брать строку (имя файла) оттуда, то всё работает. В моём же случае пришлось извратиться. CODE S:=''; for j:=0 to Length(FileName)-1 do S:=S+FileName[j]; Reader.Open(PWideChar(S)); Но это не помогло, и в итоге получаем, что якобы "нет такого файла". А также получил предупреждение (было ли оно в оригинале уже не помню) QUOTE suspicious typecast of string to pwidechar Пробовал искать в сети инфу, но либо не так запросы оформляю, либо ничего дельного там нет. Как это дело правильно преобразовать? |
![]() ![]() |
Упрощённая версия | Сейчас: 20th August 2024 - 15:45 |