Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

Создание и использование DLL   Найти похожие ветки 

 
dolmat   (2005-11-29 10:48) [0]

Пробую запихнуть одну функцию в DLL. Раньше никогда не занимался подобным. Что я делаю не так?
library z_cod;

uses
 SysUtils,
 Classes;

{$R *.RES}

function z_code(s:ShortString):ShortString; stdcall;
var zc:string[1];
zk,zk1:longint;
begin
zk:=strtoint(s);
zk1:=zk mod 11;
if zk1=0 then zc:="5"
else if zk1=10 then zc:="0"
else zc:=inttostr(zk1);
z_code:=zc;
end;

exports

z_code name "z_code";
begin
end.

И использование
unit Unit2;

interface
function z_code(i:ShortString):ShortString; external "z_cod.dll";

implementation

end.

unit Unit1;

interface

uses
 ShareMem, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, unit2;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s:string[1];
begin
s:=z_code("3121001");
end;
end.

Постоянно возникает Access volidation at adres 00331FE9 in module z_cod.dll


 
begin...end ©   (2005-11-29 10:54) [1]

По меньшей мере, добавьте stdcall в описание функции в EXE или уберите его из описания в DLL.


 
Ega23 ©   (2005-11-29 11:05) [2]


> else zc:=inttostr(zk1);


Здесь вылет?


 
Ega23 ©   (2005-11-29 11:07) [3]

Попробуй так:

function z_code(s:ShortString):ShortString; stdcall;
var
zk,zk1:longint;
begin
Result:=s;
zk:=strtoint(s);
zk1:=zk mod 11;
if zk1=0 then Result:="5"
else if zk1=10 then Result:="0"
end;


 
evvcom ©   (2005-11-29 11:39) [4]


> library z_cod;
>
> uses
>  SysUtils,
>  Classes;

А где здесь ShareMem?


 
Ega23 ©   (2005-11-29 11:40) [5]


> А где здесь ShareMem?


Он же ShortString использует...


 
wal ©   (2005-11-29 11:45) [6]


> А где здесь ShareMem?
А зачем он здесь?


 
dolmat   (2005-11-29 12:46) [7]

begin...end ©   (29.11.05 10:54) [1]
Заработало. Только теперь при выходе из программы "Rantime error 217"
Это чего нужно?


 
Anatoly Podgoretsky ©   (2005-11-29 12:49) [8]

Это уже к этому не относится


 
begin...end ©   (2005-11-29 13:03) [9]

> dolmat   (29.11.05 12:46) [7]

Уберите ShareMem.


 
jack128 ©   (2005-11-29 14:30) [10]

dolmat   (29.11.05 10:48)
function z_code(s:ShortString):ShortString; stdcall;

Модификатором const не избегайте пользоваться.



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

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

Наверх




Память: 0.49 MB
Время: 0.044 c
14-1132824008
Сержо
2005-11-24 12:20
2005.12.18
JavaScript: Перенос опций из одного select а в другой


2-1133761215
Nemiroff
2005-12-05 08:40
2005.12.18
Размеры окна при разворачивании


2-1133425225
File-Open
2005-12-01 11:20
2005.12.18
Как изменить путь к папке проектов, используемый по умолчанию?


6-1125580635
Delphi_is_cool
2005-09-01 17:17
2005.12.18
WinSock и ICQ


2-1133504778
Новичек
2005-12-02 09:26
2005.12.18
Что означает данный параметр?