Hi,
Zitat von
Union:
Das könnte es sein. Aber es MUSS 72 übergeben werden als cbSize, bei 73 gibt es den gleichen Fehler.
Wird es doch mit der korrekten Deklaration die Uwe genannt hat.
Zitat von
Uwe Raabe:
Ich würde eher vermuten, daß ein Array[0..32] of AnsiChar nicht 32 sondern 33 Byte groß ist und somit den Record wegen des Align auf 76 Byte bringt.
Dadurch das szDevice gefixt wurde und nun array[0..CCHDEVICENAME
- 1] lautet, wird der Record nicht um weitere 4 Bytes vergrößert (76-4 Byte). Die 76 Byte liegen halt an dem zu großen Array (1 AnsiChar bzw. Byte zu viel) - wegen des Aligns wird, wie Uwe korrekt vermutet der Record dann fälschlicherweise von 72+1 Byte auf 76 Byte vergrößert.
Welche Delphi Version nutzt Du? Das ganze ist im
QC gemeldet für D5-D7, gefixt für D10 also Delphi 2006 (Link:
http://qc.codegear.com/wc/qcmain.aspx?d=3239).
Gruß Assertor