Another_eYes请进!(10分)

  • 主题发起人 主题发起人 浦欣
  • 开始时间 开始时间

浦欣

Unregistered / Unconfirmed
GUEST, unregistred user!
我上回问的"如何在程序执行中设置打印机纸张类型?"的问题答案已经知道,
但我不知道该将那段程序放在何处,是放在begin
Doc之前还是之后,还是其它地方?
并且,你给我E-mail的那段程序,我只要一调用就出错,好象是内存分配、释放
的问题,你的程序如下:
procedure ChangePaperType(value: Integer);
var
sDrv: Pchar;
sPrt: Pchar;
DevAdr: THandle;
p: PDeviceModeA;
begin

sdrv := allocmem(256);
sprt := allocmem(64);
devadr := 0;
try
printer.GetPrinter(sdrv, sdrv, sprt, devadr);
p := ptr(devadr);
p^.dmFields := DM_PAPERSIZE;
p^.dmPaperSize := value;
do
cumentProperties(0, printer.handle, sdrv, p^, p^,
DM_IN_BUFFER);
finally
freemem(sdrv, 1024);
freemem(sprt, 256);
end;

end;

 
finally
freemem(sdrv, 256);
freemem(sprt, 64);
end;



放在begin
doc前或者enddoc后
 
按照上面改了,还是不行,放在begin
Doc之后,纸张类型还是没变,
而且只要运行这段程序就出现如下错误提示:
access violation at 0x4be43581:read of address 0x388b5708
83 3A 00 74 63 E8 36 6B FF FF 64 8B
 
放在begin
doc前 或者 enddoc 后 (设置下次打印页面)
^^^^^^^^^^^^^
 
接受答案了.
 

Similar threads

后退
顶部