Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Вниз

где ошибка при работе с dll   Найти похожие ветки 

 
Dober_m@N   (2003-02-24 05:34) [0]

Почему выдаёт ошибку функция при вызове из dll причём сначала всё выводит, а потом ругается типа: class exception EInvalidPointer.... ?

собсно dll ( просто тест на возвращение string"a)
library ct1;

uses
SysUtils,
Classes;

{$R *.res}

function kk(s : string) : string;
begin
result := s;
end;

export kk(s: string) : string;

begin
end.


проект(тоже просто тест):
unit Unit1;

interface

uses
Windows, Forms, Buttons, StdCtrls, Controls, Classes;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;

var
Form1: TForm1;

function kk(s: string):string; external "ct1.dll";

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MessageBox(handle, pchar(kk("kkkkkk")), "tttt", 0);
end;

end.


 
Amit   (2003-02-24 06:52) [1]

Исправление:
uses
SysUtils,
Classes;

{$R *.res}

function kk(s : string) : string;export;
begin
result := s;
end;

exports kk;

begin
end.


проект(тоже просто тест):
unit Unit1;

interface

uses
Windows, Forms, Buttons, StdCtrls, Controls, Classes;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;

var
Form1: TForm1;

function kk(s: string):string; external "ct1.dll";

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MessageBox(handle, pchar(kk("kkkkkk")), "tttt", 0);
end;


 
Dober_m@N   (2003-02-24 08:24) [2]

примерно как и раньше сначала выводит потом ругается ...class EInvalidPointer... ?


 
Егорычев Михаил   (2003-02-24 09:31) [3]

В DLL:
library ct1;

uses
SysUtils,
Classes;

{$R *.res}

function kk(s : pchar) : pchar;
begin
result := s;
end;

exports kk;


begin
end.

В проэкте:
var
Form1: TForm1;

function kk(s: string):string; external "ct1.dll";

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MessageBox(handle, StrPas(kk("kkkkkk")), "tttt", 0);
end;

Может быть я с функцией StrPas ошибся вообщем понял - перевод из
PChar в string;


 
Юрий Зотов   (2003-02-24 09:46) [4]

> Dober_m@N

Когда Вы создавали проект DLL, то Delphi вставила в него здоровенный комментарий. Как Вы думаете, для чего она это сделала - чтобы Вы его прочитали, или чтобы Вы его удалили, не читая?

См. ShareMem в справке.


 
VAleksey   (2003-02-24 11:01) [5]

Повторюсь, но
там был совершенно бесполезный текст на английском языке про ShareMem. Внук (с)



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

Форум: "Основная";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.053 c
14-17305
Мледенец
2003-02-18 13:11
2003.03.06
Помогите новичку FireBird


1-17099
zolotov
2003-02-25 10:50
2003.03.06
RxCheckListBox


3-16946
_NN
2003-02-16 21:24
2003.03.06
Удаление записи Paradox


14-17398
Юров Владимир
2003-02-19 10:35
2003.03.06
ODBC


1-17071
IVANOV
2003-02-22 08:16
2003.03.06
Глобален ли TScreen?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский