|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
||||||
Передача параметров в С-процедуру (DLL) из Delphi01.08.2015, 16:25. Показов 1845. Ответов 18
Метки нет (Все метки)
Как в программе DELPHI описать параметры и функцию, которая находится в DLL, написанную на языке С, т.е. как сделать вызов внешней функции?
Описание функции в С
0
|
||||||
| 01.08.2015, 16:25 | |
|
Ответы с готовыми решениями:
18
Передача параметров из командной строки в процедуру Delphi
Передача параметров в процедуру |
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||||||
| 02.08.2015, 21:23 | ||||||
0
|
||||||
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 03.08.2015, 09:27 [ТС] | |
|
Не совсем понял вот эту строку:
5 lpLids: PULONG; Разве здесь не должно быть Pchar?
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 03.08.2015, 09:45 | |
|
word32* lpLids
Тип word32* дословно трактуется как "указатель на 32-битное слово"
0
|
|
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 05.08.2015, 07:42 [ТС] | |
|
Не все получается. Параметры Pchar передаются, а последние три - нет. Это выходные параметры, м.б. для них нужна дополнительная спецификация? Пробовал Var и Out.
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 05.08.2015, 11:43 | ||
|
Были бы выходные - были бы объявлены как указатели (* после типа). И имена идентификаторов этих параметров начинались бы с lp. Ну это при условии если прототип ф-ции писал вменяемый чел, в планы которого не входило запутать свою и чужие разведки)
0
|
||
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 05.08.2015, 14:14 [ТС] | |
|
Таково действие (назначение процедуры). Первые два параметра-входные, остальные - выходные (результаты).
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 05.08.2015, 14:30 | |
|
Где это написано ?
0
|
|
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 05.08.2015, 15:51 [ТС] | |
|
Вы правы- последние три параметра - входные, они задают длину выходных массивов lpLemm,
lpLids, lpGram. Все дело в том, что я привык к динамической строке string в Delphi и поэтому ожидал, что длины массивов будут выходными параметрами. Все равно непонятно, что делать с этими массивами. Если в параметрах задаю длину входной строки 100, как описать этот массив? делаю new(Lplemm), затем FillChar(Lplemm,100,' '); это правильно?
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 05.08.2015, 16:09 | |
|
А ты выяснил длину данных типа Char, которую ожидает либа ?
0
|
|
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 05.08.2015, 16:12 [ТС] | |
|
В описании функции написано:
"lpWord - указатель на строку в кодировке 1251 Windows Cyrillic;" я понимаю так, что char - один байт.
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 05.08.2015, 16:13 | |
|
а Делфи какой версии ?
0
|
|
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 05.08.2015, 16:17 [ТС] | |
|
Delphi 7, Windows XP
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 05.08.2015, 16:22 | |
|
тогда можно так
s: String; SetLength(s, 100); .. matize(..., PChar(s), ..., Length(s)..);
0
|
|
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 05.08.2015, 16:26 [ТС] | |
|
Pchar(S) для входного параметра(первый Pchar - входной) работает, а для выходных параметров - нет.
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 05.08.2015, 16:38 | |
|
А какие выходные-то ?
Добавлено через 1 минуту lpGram ? разницы-то никакой - все точно так же, если ф-ция блокирующая
1
|
|
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
||
| 05.08.2015, 17:01 [ТС] | ||
|
параметры 3,4,5 - lpLemm,
lpLids, lpGram. Добавлено через 22 минуты
0
|
||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||
| 05.08.2015, 21:52 | |||
Сообщение было отмечено vln1981 как решение
Решение
1
|
|||
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 06.08.2015, 18:55 [ТС] | |
|
Спасибо - все работает.
0
|
|
| 06.08.2015, 18:55 | |
|
Помогаю со студенческими работами здесь
19
Передача параметров в процедуру Передача параметров в процедуру Передача параметров в процедуру Передача параметров в хранимую процедуру Не работает передача параметров в процедуру Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|