Einzelnen Beitrag anzeigen

tirips

Registriert seit: 20. Nov 2006
1 Beiträge
 
#9

Re: Laptop Stromalarm

  Alt 2. Mär 2009, 22:23
Sieht soweit alles prima aus, bis auf folgende Stelle:

Delphi-Quellcode:
var pb_setting: TPowerbroadcastSetting;
    buf: DWord;
begin
  if msg.WParam = PBT_POWERSETTINGCHANGE then
  begin
    pb_setting := PPowerbroadcastSetting(msg.LParam)^;
da pb_setting als TPower... deklariert ist kopiert die letzte Anweisung den TPower... Record aus dem LParam. Dabei wird nach Definition kopiert, also auch nur ein Byte für Data - dort stehen aber ggf. mehr Bytes (im Beispiel ja 4) - mit Glück fällt das nicht auf, mit Pech (und das ist wahrscheinlicher) liefert es falsche Ergebnisse.

Statt TPower... lieber direkt PPower... verwenden:

Delphi-Quellcode:
var pb_setting: PPowerbroadcastSetting;
    buf: DWord;
begin
  if msg.WParam = PBT_POWERSETTINGCHANGE then
  begin
    pb_setting := PPowerbroadcastSetting(msg.LParam);
Dann gibt's auch keine Probleme.
  Mit Zitat antworten Zitat