Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: EnumPrinterDrivers = Zugriffsverletzung (Anfängerfrage)

  Alt 3. Mär 2017, 18:03
Das muß auch knallen.

* pBuffer ist beim ersten Aufruf nicht initialisiert (das sollte dir auch dein Compiler um die Ohren hauen)
* GetMem ist nur bei einem ganz bestimmten "Fehler" richtig
* ist nichts installiert, würde cbBuf=0 passen und es gibt keinen Fehler
* und dann ist arDriverList ein Delphi-Array, was absolut garnichts mit dem C-Array zu zun hat
** du "sagst" dem Compiler aber, dass pBuffer dieses Array drin ist, das zufällg so lange gut geht, bis irgendwas auf die Control-Felder (Length und Type) des Delphi-Array zugreifen will, was z.B. am Ende der Prozedur passiert, wenn der Compiler dort den Speicher des Arrays freigeben will.
** das kann maximal in den Zeiger eines statischen array[0..x] of TDriverInfo2 gecastet werden oder man muß umkopieren, bzw. die Daten direkt in ein bestehendes dynamisches Array reinschreiben

PS: Bei SetLength sollte man natürlich die Anzahl der Records und nicht der Bytes reingeben.
$2B or not $2B

Geändert von himitsu ( 4. Mär 2017 um 02:10 Uhr)
  Mit Zitat antworten Zitat