获取打印机支持的全部纸张类型在Win2k下出现的"stack overflow"的错误!!(100分)

  • 主题发起人 主题发起人 ZRWeng
  • 开始时间 开始时间
Z

ZRWeng

Unregistered / Unconfirmed
GUEST, unregistred user!
这是一段打印设置的程序:
var
szDeviceName: String;
szPort: String;
dwPapers: DWord;
lpwPapers: array[0..255] of Word;
fSupportUserDefind: Boolean;
fSupportA3: Boolean;
fSupportA4: Boolean;
fSupportB5: Boolean;
......
begin
..........
//取打印机支持的全部纸型
dwPapers:=DeviceCapabilities(PChar(szDeviceName),PChar(szPort),DC_PAPERS,@lpwPapers,nil);
if (dwPapers<1)or(dwPapers>256) then
result:=-3;
//判断打印机是否支持自定义、A3、A4、B5纸型
while (dwPapers > 0)do
begin
case DWORD(lpwPapers[dwPapers]) of
DMPAPER_USER: fSupportUserDefind:=TRUE;
DMPAPER_A3: fSupportA3:=TRUE;
DMPAPER_A4: fSupportA4:=TRUE;
DMPAPER_B5: fSupportB5:=TRUE;
end;
dwPapers:=dwPapers-1;
end;
.......
end;
该程序段在98下正常,不会出现错误,dwPapers值为42,但在2K下dwpapers值超大:(
执行While语句的时候就造成"Stack Overflow"的错误。
不知各位是否有遇到这样的问题?应如何解决呢?谢谢。
 
给点建议嘛。唉~~
 
看来此问题无解了 :(
 
算了,版主帮我删了这个问题吧 .
tks.
 
来领分,谢谢
 
接受答案了.
 
后退
顶部