Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизСоздание и использование 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c