Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#4

Re: Definition von MONITORINFOEX falsch?

  Alt 12. Feb 2009, 13:59
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
Frederik
  Mit Zitat antworten Zitat