Moin Rolf,
die Umsetzung von Detlefs Idee würde, z.B., so aussehen:
Delphi-Quellcode:
procedure TPrinterCustom.GetPaperTrays(const APaperTrays : TStrings);
var
pDevMode : PDeviceMode;
bin : array[0..255,0..23] of Char;
i : DWORD;
Res : DWORD;
PPrinter : PPrinterInfo2;
begin
APaperTrays.Clear;
if FAllInfos.Count <> 0 then
begin
PPrinter := FAllInfos.Items[FPrinterIndex];
pDevMode := nil;
Res := DeviceCapabilities(PPrinter^.pPrinterName,
PPrinter^.pPortName,
DC_BINNAMES,
PChar(@(bin[0][0])),
pDevMode);
for i := 0 to Res-1 do
APaperTrays.Append(bin[i]);
end;
end;
Vorteil:
Man erhält eine klarere Struktur für das Erzeugen und Freigeben der Stringliste.