从网上,copy获取打印机信息的代码!出错 ( 积分: 100 )

  • 主题发起人 主题发起人 through86
  • 开始时间 开始时间
T

through86

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure&nbsp;TForm1.Button1Click(Sender:&nbsp;TObject);<br>&nbsp;&nbsp;var<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDevice&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;pChar;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDriver&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;pChar;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPort&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;pChar;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hDMode&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;THandle;<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;&nbsp;PrintDialog1.Execute&nbsp;&nbsp;&nbsp;then&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetMem(pDevice,&nbsp;&nbsp;&nbsp;cchDeviceName);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetMem(pDriver,&nbsp;&nbsp;&nbsp;MAX_PATH);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetMem(pPort,&nbsp;&nbsp;&nbsp;MAX_PATH);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Printer.GetPrinter(pDevice,&nbsp;&nbsp;&nbsp;pDriver,&nbsp;&nbsp;&nbsp;pPort,&nbsp;&nbsp;&nbsp;hDMode);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;&nbsp;lStrLen(pDriver)&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;then&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetProfileString('Devices',&nbsp;&nbsp;&nbsp;pDevice,&nbsp;&nbsp;&nbsp;'',&nbsp;&nbsp;&nbsp;pDriver,&nbsp;&nbsp;&nbsp;MAX_PATH);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDriver[pos(',',&nbsp;&nbsp;&nbsp;pDriver)&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;1]&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;#0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;&nbsp;lStrLen(pPort)&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;then&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetProfileString('Devices',&nbsp;&nbsp;&nbsp;pDevice,&nbsp;&nbsp;&nbsp;'',&nbsp;&nbsp;&nbsp;pPort,&nbsp;&nbsp;&nbsp;MAX_PATH);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lStrCpy(pPort,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@pPort[lStrLen(pPort)+2]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Memo1.Lines.Add('Device&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;StrPas(pDevice));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Memo1.Lines.Add('Driver&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;StrPas(pDriver));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Memo1.Lines.Add('Port&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;StrPas(pPort));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeMem(cchDeviceName);/////执行到这句话,总是出错。不能释放指。。。。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeMem(pDriver,&nbsp;&nbsp;&nbsp;MAX_PATH);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeMem(pPort,&nbsp;&nbsp;&nbsp;MAX_PATH);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;end;<br>end.
 
应该是freemem(pdevice);&nbsp;网络上的都可能有错,不能照搬.<br>GetMem(pDevice,&nbsp;&nbsp;&nbsp;cchDeviceName);可能也有错误
 
后退
顶部