Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.01;
Скачать: 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 вся ветка

Текущий архив: 2003.09.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
14-1662
Ketmar
2003-08-12 10:16
2003.09.01
нет слов.


14-1563
VEG
2003-08-11 20:20
2003.09.01
Радиосеть


14-1555
Ketmar
2003-08-10 07:24
2003.09.01
Новосиьирск, Новосибирск... а киевляне? все на сходку гоп! %-)


14-1560
Всеволод Соловьёв
2003-08-12 11:23
2003.09.01
Глюкобаги форума


6-1524
Basil
2003-06-26 14:20
2003.09.01
закачка по FTP