Einzelnen Beitrag anzeigen

Andreas2k

Registriert seit: 2. Jan 2003
108 Beiträge
 
Delphi XE5 Professional
 
#19

AW: EnumPrinterDrivers = Zugriffsverletzung (Anfängerfrage)

  Alt 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
  Mit Zitat antworten Zitat