gpt4 book ai didi

delphi - Printer.GetPrinter 在 Delphi XE2 中引发异常

转载 作者:行者123 更新时间:2023-12-01 23:00:02 33 4
gpt4 key购买 nike

我正在尝试使用 Zebra S4M 打印机打印一系列标签,由于某种原因,页面高度似乎停留在 5 厘米,而我需要将其设置为 6.8 厘米。

我正在尝试使用以下代码设置纸张尺寸

var
FDevice: PChar;
FDriver: PChar;
FPort: PChar;
DeviceMode: THandle;
DevMode: PDeviceMode;
begin
{to get a current printer settings}
Printer.GetPrinter(FDevice, FDriver, FPort, DeviceMode);
{lock a printer device}
DevMode := GlobalLock(DeviceMode);
DevMode^.dmPaperSize := 0;
DevMode^.dmPaperWidth := fBaseSettings.Width;
DevMode^.dmPaperLength := fBaseSettings.Height;
Printer.SetPrinter(FDevice, FDriver, FPort, DeviceMode);
{unlock a device}
GlobalUnlock(DeviceMode);
end;

其中 fBaseSettings 包含目标标签尺寸(除其他外),但我不断收到错误消息项目 SPXLabels.exe 引发异常类 $C0000005,并显示消息“0x00rred82 处的访问冲突:写入地址 0x59212b17

我看不出我做错了什么!非常感谢任何帮助。

最佳答案

FDevice、FDriver 和 FPort 是指向您传入以取回数据的字符串的指针。因此,您必须首先为此分配内存。

试试这个

var 
FDevice, FDriver, FPort: string;
begin
SetLength(FDevice, 200);
SetLength(FDriver, 200);
SetLength(FPort, 200);
{to get a current printer settings}
Printer.GetPrinter(PChar(FDevice), PChar(FDriver), PChar(FPort), DeviceMode);

关于delphi - Printer.GetPrinter 在 Delphi XE2 中引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32461215/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com