Вниз
Скачать: CL | DM;

Проблемы с dll   Найти похожие ветки 

← →
Lex   (2003-08-16 07:22) [0]

Прочитал статью по адресу
http://www.delphimaster.ru/articles/usedll/index.html
Запустил. При нажатии на button1 вылезло окошко. При нажатии на кнопку OK написано программа выполнила недоступную операцию и будет закрыт. Подскажите, почему?


← →
Skier ©   (2003-08-16 10:49) [1]

Что запустил ? Код-то покажи...


← →
Lex   (2003-08-16 18:53) [2]

DLL:
library mydll;

uses SysUtils, Classes;

function GetSimpleText(LangRus: Boolean): PChar; stdcall;
begin
if LangRus then
Result := PChar("Здравствуй, мир!")
else
Result := PChar("Hello, world!");
end;

exports GetSimpleText;

begin
end.

I-вариант
implementation

function GetSimpleText(LangRus: Boolean): PChar; stdcall; external "MYDLL.DLL";

procedure Button1Click(Sender: TObject);
begin
ShowMessage(StrPas(GetSimpleText(True)));
ShowMessage(StrPas(GetSimpleText(False)));
end;

II-вариант
var
Form1: TForm1;
GetSimpleText: function(LangRus: Boolean): PChar;
LibHandle: THandle;

procedure Button1Click(Sender: TObject);
begin
@GetSimpleText := nil;
LibHandle := LoadLibrary("MYDLL.DLL");
if LibHandle >= 32 then begin
@GetSimpleText := GetProcAddress(LibHandle,"GetSimpleText");
if @GetSimpleText <> nil then
ShowMessage(StrPas(GetSimpleText(True)));
end;
FreeLibrary(LibHandle);
end;

Первый вариант - всё прекрасно, со вторым проблемы.


← →
Skier ©   (2003-08-16 19:47) [3]

GetSimpleText: function(LangRus: Boolean): PChar; stdcall;


← →
Lex   (2003-08-16 21:46) [4]

Спасибо, всё заработало.


← →
Юрий Зотов ©   (2003-08-16 22:07) [5]

> Lex (16.08.03 18:53) [2]

Попробуйте подправить GetSimpleText таким образом:

function GetSimpleText(LangRus: Boolean): PChar; stdcall;
var
S: string;
begin
if LangRus then
S := "Здравствуй, мир!"
else
S := "Hello, world!";
Result := PChar(S)
end;

И посмотрите, не возникнет ли при вызове ошибка.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
6-1539
gala
2003-06-25 13:19
2003.09.01
Sockets Problem


1-1390
imp403
2003-08-16 12:57
2003.09.01
64x Icon


14-1644
Best Guns
2003-08-12 14:18
2003.09.01
Куда делись все ветки?!


1-1373
Question
2003-08-16 18:03
2003.09.01
Указателю на динамический массив значения после GetMem


7-1694
gunner
2003-06-16 14:33
2003.09.01
Получение прав администратора в программе




   Наверх