GetLastError()=6
场景:打印出错,getlasterror=6,详细内容请进.该如何解决
打印出错,getlasterror=6,详细内容请进.
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 同样如此,到底那里错了啊?
------解决方案--------------------
用writetofile试试
把端口看成文件
------解决方案--------------------
没有必要这样打印吧?
直接打印就行了
为何要 ts:=Tprinter.Create?
printer.Canvas.TextOut(0,0, 's ') 就可以。
------解决方案--------------------
uses Printers;单元的时候
直接用Printer就行了,不用再手工去创建;
他的定义是:
function Printer: TPrinter;
begin
if FPrinter = nil then FPrinter := TPrinter.Create;
Result := FPrinter;
end;
------解决方案--------------------
要么直接uses Printers,要么检查你的那个出错的程序里去掉uses Printers看看
打印出错,getlasterror=6,详细内容请进.
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 同样如此,到底那里错了啊?
------解决方案--------------------
用writetofile试试
把端口看成文件
------解决方案--------------------
没有必要这样打印吧?
直接打印就行了
为何要 ts:=Tprinter.Create?
printer.Canvas.TextOut(0,0, 's ') 就可以。
------解决方案--------------------
uses Printers;单元的时候
直接用Printer就行了,不用再手工去创建;
他的定义是:
function Printer: TPrinter;
begin
if FPrinter = nil then FPrinter := TPrinter.Create;
Result := FPrinter;
end;
------解决方案--------------------
要么直接uses Printers,要么检查你的那个出错的程序里去掉uses Printers看看