Вниз
Скачать: 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.013 c
14-1666
Igor__
2003-08-12 11:43
2003.09.01
WebBrowser


6-1545
P@SHA
2003-06-26 12:59
2003.09.01
TNmSmtp


4-1715
BillyJeans
2003-07-01 09:23
2003.09.01
CreateProcess или что делаю не так?


14-1582
Antik
2003-08-13 11:12
2003.09.01
расширения файлов


4-1732
DelphiN!
2003-06-30 07:58
2003.09.01
Как сохранить позицию Scrollbar-а?




   Наверх