Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.011 c
1-1132553257
dreamse
2005-11-21 09:07
2005.12.18
Как в DBChart выводить значения времени ?


14-1133159215
Ega23
2005-11-28 09:26
2005.12.18
С днем рождения! 28 ноября


3-1130581620
Viktop
2005-10-29 14:27
2005.12.18
Грид не отображает данные


1-1132299619
shc
2005-11-18 10:40
2005.12.18
Цвет стрелочки в ComboBox


2-1133250688
Vis74
2005-11-29 10:51
2005.12.18
Как при запуске программы определить версию ОС и если...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский