打印出错,getlasterror=6,详细内容请进.

baiduan 2007-05-16 05:42:51
var
ts:Tprinter;
s:string;
begin
try
s:=inputbox('提示','hi','');
if s='' then exit;
ts:=Tprinter.Create;
ts.BeginDoc;
//textout(p.Handle,50,69,pchar('sdfsdf'),6);
ts.Canvas.TextOut(0,0,'s');
ts.EndDoc;
ts.Free;
except
showmessage(inttostr(getlasterror));
end;
//===========
程序如上,在2003上表现正常,在2000中单独编写为程序时正常,这段代码放入另外一个程序时报错,经检测是ts.beginDoc 这行代码,getlasterror=6 无效句柄.

用api textout 同样如此,到底那里错了啊?
...全文
1459 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
baiduan 2007-05-18
  • 打赏
  • 举报
回复
但是,别的程序中,ts:=Tprinter.create都是正常的,不报错的.只有那个带钩子的打印程序
用ts:=Tprinter.create不行,而且不安装钩子,那个程序打印依然失败,在从代码看,也看不出来什么,真是奇怪了....
Elysium 2007-05-17
  • 打赏
  • 举报
回复
要么直接uses Printers,要么检查你的那个出错的程序里去掉uses Printers看看
baiduan 2007-05-17
  • 打赏
  • 举报
回复
writetofile 不适合,我要定位文字的坐标.

直接用function printer:Tprinter 也不行.
如果是vb倒可以,可是delphi中这个函数返回Tprinter
类,效果和ts:=Tprinter.create是一样的.正确用法如下:
var
i:integer;
begin
printer.BeginDoc; //依然要调用beginDoc
for i:=0 to 10 do
begin
//textout(p.Handle,50,69,pchar('sdfsdf'),6);
printer.Canvas.TextOut(50,69*(i+1),'haha,I finally it');
end;
printer.EndDoc;
end;
这样用才可以,否则报错.

我的错误关键在于:
------
在2003上表现正常,在2000中单独编写为程序时正常,这段代码放入另外一个程序时报错,
------
那段代码独立出来是正常的执行的!!!

放入另外程序中就错了,那个程序调用了WH_JOURNALRECORD钩子,
但是调试的时候我关闭了这个钩子,错误一样存在.


chenzhuo 2007-05-17
  • 打赏
  • 举报
回复
uses Printers;单元的时候
直接用Printer就行了,不用再手工去创建;
他的定义是:
function Printer: TPrinter;
begin
if FPrinter = nil then FPrinter := TPrinter.Create;
Result := FPrinter;
end;
flexlonger 2007-05-17
  • 打赏
  • 举报
回复
没有必要这样打印吧?

直接打印就行了

为何要 ts:=Tprinter.Create?

printer.Canvas.TextOut(0,0,'s') 就可以。
Elysium 2007-05-17
  • 打赏
  • 举报
回复
呵呵Printer默认是一个全局的打印变量,你的create以后的是你自己的一个临时变量,不是由系统维护的,而function printer应该返回的是全局变量的引用
baiduan 2007-05-17
  • 打赏
  • 举报
回复
wo kao,很多事情真没办法解释,
function Printer: TPrinter;
begin
if FPrinter = nil then FPrinter := TPrinter.Create;
Result := FPrinter;
end;

看代码function printer和ts:=Tprinter.create效果一样,但是用ts报错,
用printer不报错.
IDWB 2007-05-16
  • 打赏
  • 举报
回复
用writetofile试试
把端口看成文件

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧