Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.051 Beiträge
Delphi 12 Athens
|
AW: EnumPrinterDrivers = Zugriffsverletzung (Anfängerfrage)
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
Geändert von himitsu ( 4. Mär 2017 um 02:10 Uhr)
|