Registriert seit: 2. Jan 2003
108 Beiträge
Delphi XE5 Professional
|
AW: EnumPrinterDrivers = Zugriffsverletzung (Anfängerfrage)
13. Mär 2017, 16:13
Ok, ich hab es jetzt wie in deinem ersten Beispiel gemacht.
Ist das mit pStart und FreeMem so in Ordnung?
Delphi-Quellcode:
function GetPrinterDrivers(): boolean;
var
Buffer : PDriverInfo2;
pStart : Pointer;
i : Integer;
BytesNeeded : DWORD;
ItemsReturned : DWORD;
begin
if not EnumPrinterDrivers(nil, nil, 2, nil, 0, BytesNeeded, ItemsReturned) then
begin
if GetLastError = ERROR_INSUFFICIENT_BUFFER then
begin
GetMem(Buffer, BytesNeeded);
pStart := Buffer;
try
if EnumPrinterDrivers(nil, nil, 2, Buffer, BytesNeeded, BytesNeeded, ItemsReturned) then
begin
for i := 1 to ItemsReturned do
begin
Form1.Memo1.Lines.Add(i.ToString +' :: '+Buffer.pName);
inc(Buffer);
end;
end;
finally
Buffer := pStart;
FreeMem(Buffer);
end;
end;
end;
Andreas
|
|
Zitat
|