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看看