Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: EnumPrinterDrivers = Zugriffsverletzung (Anfängerfrage)

  Alt 3. Mär 2017, 17: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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