Ladezustand des Akkus auslesen
-
Hallo zusammen,
programmiere eigentlich z.Z. noch in der Konsole, ohne mit WinAPI & Co rumzuhantieren. Um die Akkulaufzeit meines Laptops zu überprüfen, wollte ich mir ein kleines Programm schreiben, welches in regelmässigen Abständen den Zustand des Akkus in eine Textdatei schreibt.
Dazu habe ich mir die Funktion GetSystemPowerStatus aus der MSDN rausgesucht. Wenn ich die Funktion alleine aufrufe, funktioniert das auch prima, will ich jedoch das ganze mit dem nachstehenden Code in eine Textdatei schreiben, funktioniert es nicht.
#include <iostream> #include <fstream> #include <string> #include <Windows.h> using namespace std; int main() { fstream datei("Test.txt", ios::out | ios::app); if ( !datei ){ cerr << "Datei kann nicht erstellt werden!"; } else{ SYSTEM_POWER_STATUS * pwrStatus; for( ; ; ){ GetSystemPowerStatus( pwrStatus ); datei << (int)(pwrStatus->BatteryLifePercent) << endl; Sleep(1000); } } return 0; }Der Debugger schmeisst mich mit einem Segmention Fault während des Aufrufs von GetSystemPowerState raus, ich weiß aber leider nicht warum
.
Ich benutze den gcc (3.2) mit dem Borland C++BuilderX.Vielen Dank im Voraus für eure Hilfe.
Notebookuser
-
lern C
-
power off. schrieb:
lern C
Das ist mittelfristig sicher eine gute Idee, hilft mir bei meinem aktuellen Problem leider nicht weiter. Oder ist es tatsächlich so ein grundlegender Fehler, den ich da gerade nicht sehe?
Bin weiterhin für jeden Hinweis dankbar.
-
ja ist ein grundlagenfehler.
und zwar hier:
SYSTEM_POWER_STATUS * pwrStatus;
-
Hmm ich vermute mal, das der Pointer ins nirvaner Zeigt

-
Danke! Da hätte ich auch von alleine drauf kommen können.
Ich denke, ich sollte tatsächlich nochmal ein paar Kapitel wiederholen...
Schönen Abend noch.
-
(D)Evil schrieb:
Hmm ich vermute mal, das der Pointer ins nirvaner Zeigt

Und was hat er da genau falsch gemacht mit dem Pointer ? Habe auch noch nie
mit einem Pointer gearbeitet und würde das gerne wissen.
Wie wurde das Problem gelöst ?
-
Er verwendet einen Pointer der ins Nirvana zeigt - so wäre es wohl besser:
SYSTEM_POWER_STATUS pwrStatus; GetSystemPowerStatus( &pwrStatus );