dll原文
library Project2;
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons,printers;{$R *.RES}
function test:integer;export;stdcall;
begin
showmessage('all right');
result:=0;
end;exports test;
begin
end.
引用:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
............................//
............................//
var
Form1: TForm1;
const
dllpath='D:\Program Files\Borland\Delphi5\Projects\dlltest\Project2.dll';
implementation{$R *.DFM}
function test:integer;external dllpath name 'test';
procedure TForm1.Button1Click(Sender: TObject);
begin
test;
end;
根本就无法运行.提示非法访问地址,是不是dll函数的输出方法不对呀.
library Project2;
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons,printers;{$R *.RES}
function test:integer;export;stdcall;
begin
showmessage('all right');
result:=0;
end;exports test;
begin
end.
引用:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
............................//
............................//
var
Form1: TForm1;
const
dllpath='D:\Program Files\Borland\Delphi5\Projects\dlltest\Project2.dll';
implementation{$R *.DFM}
function test:integer;external dllpath name 'test';
procedure TForm1.Button1Click(Sender: TObject);
begin
test;
end;
根本就无法运行.提示非法访问地址,是不是dll函数的输出方法不对呀.
解决方案 »
- XE2 WebServices变量申请后不能用,D6可以
- delphi 中 a的b次方怎么算啊?
- Delphi7怎么对数据库进行处理,把数据送给rave显示?有图参考显示。
- 请问该怎样正确获取某一种类型的变量的数据呢?
- 想写一个ACCESS数据库的C/S的应用程序,练练手.不知道那位天使大哥,大姐有资料没送我份!
- 求一句在access中的sql语句!!!!!!!!!!!!!
- 如何把delphi中的程序编译成应用程序
- 如何在QR中根据数据量进行分页??
- 请问各位老大,怎样写个函数去获得一个常用汉字的五笔编码??
- 紧急求助:flash技术问题?????????
- 彻底删除记录?..我好像分满多的((在线等))
- 菜鸟问题:如何能反馈cmd中的结果??
DLL
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons,printers;
{$R *.res}function test:integer;export;stdcall;
begin
showmessage('all right');
result:=0;
end;exports test;begin
end.APPLICATION:
nterfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShellApi, StdCtrls;type
TForm1 = class(TForm)
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;const
dllpath= 'E:\Program Files\Borland\Delphi6\Projects\DllTest\Project2.dll';
implementation{$R *.dfm}function test:integer;external dllpath name 'test';procedure TForm1.Button2Click(Sender: TObject);
begin
test;
end;end.
/\
|
unit printunit;interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons,printers; const INCHES_PER_MILIMETER: REAL =0.04;//打印字行间距
TYPE
toffset=record
x,y:integer;
end;
var fdevicename:string;//打印机名称
fpageheightpixel,fpagewidthpixel:integer;//页宽和页高
forientation:tprinterorientation;
fprinteroffsetpixels:toffset;
fpixelspermmx,fpixelspermmy:real;
mmsize,fpageheightmm:integer;
thereport,thehead,headline,recordline,tfname,tlname:string;
procedure getdevicesetting;
function puttext(mmx,mmy:integer;s:string;leftalign:boolean):integer;
function printfile(filename:string;fontsize:integer):integer;export;stdcall;implementation
procedure getdevicesetting;
var retval:integer;
pixx,pixy:integer;
begin
fdevicename:=printer.Printers[printer.printerindex];
//取得设备名称
fpageheightpixel:=printer.PageHeight;
fpagewidthpixel:=printer.PageWidth;
forientation:=printer.Orientation;
fprinteroffsetpixels.x:=getdevicecaps(printer.handle,physicaloffsetx);
fprinteroffsetpixels.y:=getdevicecaps(printer.handle,physicaloffsety);
retval:=escape(printer.handle,getprintingoffset,0,nil,@fprinteroffsetpixels);
pixx:=getdevicecaps(printer.handle,logpixelsx);
pixy:=getdevicecaps(printer.handle,logpixelsy);
fpixelspermmx:=inches_per_milimeter*pixx;
fpixelspermmy:=inches_per_milimeter*pixy;
fpageheightmm:=round(fpageheightpixel/fpixelspermmy);
end;function puttext(mmx,mmy:integer;s:string;leftalign:boolean):integer;
var
x,y:integer;
align:word;
begin
if leftalign then
align:=settextalign(printer.handle,ta_bottom or ta_left)
else
align:=settextalign(printer.handle,ta_bottom or ta_right);
result:=-1;
x:=trunc(mmx*fpixelspermmx)-fprinteroffsetpixels.x;
y:=trunc(mmy*fpixelspermmy)-fprinteroffsetpixels.y;
if x<0 then exit;
if y<0 then exit;
printer.Canvas.TextOut(x,y,s);
result:=0;
end;function printfile(filename:string;fontsize:integer):integer;
var f:textfile;
str:string;
row:integer;
begin
row:=0;
getdevicesetting;
if fileexists(filename)then
begin
printer.BeginDoc;
printer.Canvas.Font.Size:=fontsize;
assignfile(f,filename);
reset(f);
while not eof(f) do
begin
readln(f,str);
puttext(10,10*row,str,true);
row:=row+1;
end;
printer.EndDoc;
closefile(f);
result:=0;
end;
end;end.
****************************************************
****************************************************
library printdll;
uses
SysUtils,
Classes,printers,
printunit in 'printunit.pas';
{$R *.RES}
exports printfile;begin
end.
我在引用时就是报错,帮忙查一下.