powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DLL на Delphi
17 сообщений из 17, страница 1 из 1
DLL на Delphi
    #39693994
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые коллеги! Писал очень давно (еще в середине 90-х годов) на Turbo Pascal, сейчас встала необходимость написать небольшую DLL. Смог разобраться с консольным приложением только на Delphi 6.

Вот код DLL:

Код: pascal
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.
26.
27.
28.
29.
30.
library GetKey;

{$APPTYPE CONSOLE}

uses Windows;

function GetKeyFromSection(var pFileName: PChar; var pSection: PChar): PChar;
var
   LibHandle: HModule;        // описатель библиотеки
   lcBuf: PChar;
   lnSize: Integer;

begin
   lnSize := 512;
   lcBuf := '                               ' + chr(0); 

   LibHandle := LoadLibrary('kernel32.dll');
    if LibHandle <> 0 then
       begin
           GetPrivateProfileString(pSection, nil, '', @lcBuf, lnSize, pFileName);
       end;

    Result := lcBuf;
end;

exports
  GetKeyFromSection;

begin
end.



Библиотека компилируется, только при вызове функции вылетает в Runtime error 216. Подскажите, где еще допущены ошибки.

Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
...
Рейтинг: 0 / 0
DLL на Delphi
    #39693997
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
DLL на Delphi
    #39694002
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK-Shahгде еще допущены ошибки.

Что значит "ещё"? Там вообще ни одной правильной строчки нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DLL на Delphi
    #39694013
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Хорошо, приведите строчки правильные.
...
Рейтинг: 0 / 0
DLL на Delphi
    #39694019
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function strProfile(const aFile, aSection, aEntry, aDefault: string): string;
var
  aTmp: array[0..255] of Char;
begin
  GetPrivateProfileString(PChar(aSection), PChar(aEntry),
    PChar(aDefault), aTmp, Sizeof(aTmp) - 1, PChar(aFile));
  Result := StrPas(aTmp);
end;
...
Рейтинг: 0 / 0
DLL на Delphi
    #39694021
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AK-ShahDimitry Sibiryakov,

Хорошо, приведите строчки правильные.
Тебе ссылку дали. Или тоже "языков не знаешь?"
...
Рейтинг: 0 / 0
DLL на Delphi
    #39694033
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK-Shah,

Чем класс TIniFile из модуля IniFiles не устроил?

P.S. По ошибкам - см. ShareMem по ссылке, если хочешь стринги в параметрах/результатах фций dll юзать.
...
Рейтинг: 0 / 0
DLL на Delphi
    #39694615
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK-ShahDimitry Sibiryakov,

Хорошо, приведите строчки правильные.

Для того, чтобы приводить правильные строчки, надо знать задачу. То, что написано, мало того, что неправильно, оно еще и не нужно, потому что kernel32 импортируется любым исполняемым модулем на Delphi и чтобы вызвать GetPrivateProfileString не надо изобретать дополнительных DLL.
...
Рейтинг: 0 / 0
DLL на Delphi
    #39694643
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
{$APPTYPE CONSOLE} ?
...
Рейтинг: 0 / 0
DLL на Delphi
    #39694649
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPC{$APPTYPE CONSOLE} ?
"Кому сейчас легко?" - ©.
...
Рейтинг: 0 / 0
DLL на Delphi
    #39695220
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi,

авторДля того, чтобы приводить правильные строчки, надо знать задачу. То, что написано, мало того, что неправильно, оно еще и не нужно, потому что kernel32 импортируется любым исполняемым модулем на Delphi и чтобы вызвать GetPrivateProfileString не надо изобретать дополнительных DLL.

Так оно. Собственно, это была попытка решить псевдо-проблему, когда с Visual Foxpro (да-да, на нем пишем клиента, хотя понимаю, что переходить надо на другое - си-шарп, делфи, или java - что-то из этого в наших реалиях. Не передавались параметры, вроде все изрыл, не находил ошибки. Суть - из под APP-менеджера стартовала фокс-программа. Но были проблемы где-то в импорте ДЛЛ-функций. К счастью, это место я нашел (может кому пригодится - обычно ИНИ-файл лежит рядом с ЕХЕ, из фокса путь вычитывался по ТЕКУЩЕМУ каталогу... Но из под Делфи-менеджера-проектов путь при запуске был относительно не ЕХЕ-файла фокса, а ЕХЕ-файла менеджера. Переписали строчку через фоксовую SYS(16) - получить имя запускаемой программы + функция получения полного пути. все взлетело. необходимость в длл действительно отпала. но вспоминать паскаль уже под делфи - только прибавило сил и решимости. К тому же у нас на Делфи большинство проектов, но и без Фокспро пока делать нечего, без нормализации все хранится.

хочется поблагодарить всех тех. кто давал дельные советы и ссылки.

Спасибо, коллеги!
...
Рейтинг: 0 / 0
DLL на Delphi
    #39695223
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По крайней мере я не согласен с утверждением, что там "все строчки неправильные". Да, согласен, что многие вещи подзабылись, а что-то в Делфи стало по-другому в сравнении с Турбо Паскалем, на котором я и недокументированные функции под Нетварь юзал, и вставки на ассемблере писал. Это было в 90-годы. Много воды утекло с тех пор...
...
Рейтинг: 0 / 0
DLL на Delphi
    #39695225
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK-Shahсогласен, что многие вещи подзабылись

Конечно, это ведь так просто: забыть работу с указателями и то, что память под буфера надо
выделять пере использованием.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DLL на Delphi
    #39695249
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Он это и сделал

Код: pascal
1.
 lcBuf := '                               ' + chr(0); 




Видишь сколько пробелов поставил. Даже позаботился влепить #0 на конец. Кстати про #0 он не в курсе
...
Рейтинг: 0 / 0
DLL на Delphi
    #39695252
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гирлионайльдо
Код: pascal
1.
 lcBuf := ' ' + chr(0); 





Видишь сколько пробелов поставил
На глаз таки меньше 512.
...
Рейтинг: 0 / 0
DLL на Delphi
    #39697164
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPC{$APPTYPE CONSOLE} ?
Для надежности это лучше писать дважды.
...
Рейтинг: 0 / 0
DLL на Delphi
    #39697184
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну яLocksmithPC{$APPTYPE CONSOLE} ?
Для надежности это лучше писать дважды.
Зачем?
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DLL на Delphi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]