Zahl aus einer Datei zwei Mal einlesen



  • M. Barcke schrieb:

    da kann man auch nicht einfach die uhr umstellen

    Wenn die Uhr umgestellt ist, bin ich der Meinung das es meinem Programm nichts anhaben würde. Das Programm wird alle fünf Minuten ausgeführt, so ist zumindest der Plan.

    also brauchst du wieder ein anderes programm, was dein programm aller 5 minuten ausführt... aber ok - da kannst du wenigstens mit sleep arbeiten - da sollte die uhr auch keine rolle spielen, würde ich mal behaupten wollen...
    elegant wird es halt noch immer nicht...
    wie läuft das denn? deine töchter machen den pc an und nach 2h soll er einfach wieder runterfahren?
    oder soll es auch funktionieren, dass sie den pc anmachen, ne stunde spielen und später noch mal an den pc gehen und wieder 1h spielen dürfen?

    bb



  • unskilled schrieb:

    wie läuft das denn? deine töchter machen den pc an und nach 2h soll er einfach wieder runterfahren?
    oder soll es auch funktionieren, dass sie den pc anmachen, ne stunde spielen und später noch mal an den pc gehen und wieder 1h spielen dürfen?

    bb

    Genau so hatte ich mir das gedacht.
    Ich dachte mit dem "Ausfgabenplaner" unter Windows liesse sich das gut realifiseren, das alle 5 min auszuführen.

    Der Code von mir geht übrigens doch, habe nicht bemerkt das Dev-C++ unten einen Fehler angezeigt hatte.



  • dann komm ich aber auf nur 2 nötige dateien.
    einmal datum
    und einmal die schon vergangene zeit.
    man könnte so gar das datum als dateiname nehmen - dann könnte man am ende der woche immer gucken, wie lang sie tatsächlich am pc waren und die differenz vll auf die nächste woche verteilen oder so.

    aufgabenplaner: als trigger habe ich nur täglich gesehen - und bei bestimmten ereigniss habe ich nirgendwo uhrzeit gefunden - allerdings hab ich auch nicht lang gesucht sondern nur nen blick drauf geworfen.

    bb



  • [quote="M. Barcke"]

    unskilled schrieb:

    habe nicht bemerkt das Dev-C++ unten einen Fehler angezeigt hatte.

    Wenn Du gerade Programmieren lernen willst, und somit noch Anfänger bist, und deshalb evtl. mit Dev-C++ auch noch nicht so gut umgehen kannst, dann lerne es erst gar nicht und benutz was anderes; Dev-C++ ist veraltet und wird nicht weiter entwickelt.

    Empfehlenswert ist zB VisualStudio Express, das gibt's ebenfalls umsonst. Ist zwar sehr umfangreich und mächtig, aber für Windows-Programmierung (ich hab jetzt mal Windows unterstellt) unschlagbar.



  • Also ich kann einen 5-Minuten-Takt einstellen beim Trigger 🙂

    Es sind eigentlich auch nur zwei Dateien nötig, da ich es aber nicht hinbekommen hatte

    system("date | find \"Aktuelles Datum:\"")
    

    in einen String zu schreiben, habe ich einfach eine zweite Datum-Datei genommen.

    Nette Idee mit dem Dateiennamen und auch der "Wochenübersicht", schreib ich mir mal auf. Ich bin aber erstmal froh, wenn das alles so klappt wie es soll.

    Vielen Dank für euer aller Hilfe, Ihr seit echt ein prima Forum

    Liebe Grüße

    Martin



  • Mir fällt gerade auf, dass das Problem mit system("date") immer noch besteht.
    Und zwar hat man die Möglichekeit bei dem Befehl "date" ein neuen Datum einzugeben, dieses erwartet er auch bei :

    system("date | find \"Aktuelles Datum:\" > C:\\Users\\LPrelle\\Desktop\\akdate.txt");
    

    Also muss ich immer Bestätigen damit er das Programm weiter ausführt. Gibt es einen Befehl so etwas zu unterdrücken?

    VisualStudio habe ich auch, nur hat mein Pc Probleme mit dem Programm wie es scheint, oft tauchen Grafikfehler auf oder es lässt sich nicht scrollen.



  • wieso find?
    du weist doch, wo die datei liegt...
    dann bastelst du dir aus dem datum den namen und dann ists ja nur noch das öffnen.
    wenn das fehl schlägt (bzw eine leere datei erstellt wird -> das auslesen fehl schlägt), weist du, dass es der erste aufruf war.

    ich weiß allerdings nicht, in wie fern der programmaufruf aller 5minuten stört - kein plan, wie der aufgabenplaner arbeitet(kann man minimiert starten? sonst würde man jedes mal den fokus verlieren -> beim schreiben schelcht und beim iwas im fullscreen machen erst recht)

    hier hast du jedenfalls eine sehr gute C++-Referenz: http://www.cplusplus.com/reference/

    bb



  • M. Barcke schrieb:

    VisualStudio habe ich auch, nur hat mein Pc Probleme mit dem Programm wie es scheint, oft tauchen Grafikfehler auf oder es lässt sich nicht scrollen.

    den fehler haben viele - aber komischerweise erst seit msvc10 - keine ahnung, weshalb...
    zu beheben:

    tools > optionts > environment > general > use hardware graphics acceleration if available
    das sollte _nicht_ aktiviert sein, wenn diese fehler auftreten.

    bb

    zum system-rumgewurschtel: bäh - nutz doch die C++ funktionen, die dafür gedacht sind:
    http://www.cplusplus.com/reference/clibrary/ctime/



  • wieso find?
    du weist doch, wo die datei liegt...

    Find sucht ja auch nicht nach der Datei, sondern sucht in dem output von dem Befehl "Date" nach der Zeile wo "Aktuelles Datum" steht und schickt dann das ganz an die Text-Datei. Problem ist das beim Befehl eine Eingabe erwartet wird.
    Vielleicht jmd noch eine Idee?



  • Klar, es ist empfehlenswert, sich in die C++ - Bibiotheken für die Datei-Ein/Ausgabe einzuarbeiten.
    Man kann sich die Sache aber auch einfach machen :
    http://msdn.microsoft.com/en-us/library/ms725501%28VS.85%29.aspx
    bzw.
    http://msdn.microsoft.com/en-us/library/ms724353%28v=VS.85%29.aspx
    Noch einfacher wäre dann die Int-Variante (http://msdn.microsoft.com/en-us/library/ms724345%28VS.85%29.aspx).
    Aber wie ich schon geschrieben habe, halte ich es für besser, die Werte in der Registry abzulegen.
    Und da ein Aufpoppen eines Fensters alle 5 Minuten doch nervig sein kann, auch wenn du es sofort mit ShowWindow(GetConsoleWindow(),SW_HIDE) verstecken kannst, würde ich bei der Entwicklung die Konsole, später jedoch ein "normales" Windowsprogramm ohne Fenster nehmen.



  • Wie unskilled schon schrieb, stell das Datum mit Funktionen der C-Library fest. Solche 'system' - Aufrufe solltest Du Dir im Idealfall sparen.



  • Ich habe mittlerweile das Programm fertiggestellt. Nur eine Sache hindert mich an der Verwendung :

    Vicious Falcon schrieb:

    ShowWindow(GetConsoleWindow(),SW_HIDE)

    Ich bekomme ShowWindow einfach nicht zum laufen. Habe das gefühlte halbe Internet gelesen, aber ich komme einfach nicht zu einer funktionierenden Antwort.
    Habe ebenso schon versucht ein WIN32-Projekt, welches keine Konsole hat, zu erstellen - vergeblich.

    Mögt Ihr mir noch ein weiteres mal Helfen?

    Vielen Dank



  • imho: Erfinder->Rad->Neu ... meist kommen damit 7eckige Räder raus ... rollt ja auch ... irgendwie ...

    http://windows.microsoft.com/de-DE/windows/discover/kids-and-computers
    http://www.kindersicherung-internet.de/
    usw



  • M. Barcke schrieb:

    Ich habe mittlerweile das Programm fertiggestellt. Nur eine Sache hindert mich an der Verwendung :

    Vicious Falcon schrieb:

    ShowWindow(GetConsoleWindow(),SW_HIDE)

    Ich bekomme ShowWindow einfach nicht zum laufen.

    Wo genau ist das Problem?
    Wenn ich diesen Code unverändert in eines meiner Konsolenprogramme aufnehme, verschwindet das Konsolenfenster und das Programm ist nur noch im Taskmanager wieder auffindbar.



  • Verwendest du denn Visual Studio, welches, wie du sagtest, bereits installiert ist?
    Deklariert ist ShowWindow in der Datei winuser.h, gelinkt werden muss gegen user32.lib.
    Um eine Windows-Applikation zu erstellen, reicht es, New->Project->Win32 Application zu wählen und dann soetwas wie "simple application" auszuwählen.

    Jetzt sollten einige Dateien erstellt werden, darunter auch eine, die bereits den Einstiegspunkt WinMain(...) enthält.
    Deinen kompletten Code kannst du nun in diese Funktion packen. cout und Konsorten funktionieren jetzt natürlich nicht mehr, für Ausgaben musst du bspw. MessageBox(0,"hier dein Text",0,0) bemühen.

    @padreigh : Es wurden ihm ja auch schon fertige Sachen vorgeschlagen, der Threadersteller wollte sich aber in die Programmierung etwas einarbeiten und solch ein Projekt finde ich gar nicht mal schlecht dafür.
    Im Übrigen kann er nach Fertigstellung immer noch auf Alternativen umsteigen.



  • Belli schrieb:

    Wo genau ist das Problem?
    Wenn ich diesen Code unverändert in eines meiner Konsolenprogramme aufnehme, verschwindet das Konsolenfenster und das Programm ist nur noch im Taskmanager wieder auffindbar.

    Als ich den Text eingesetzt hab, kamen immer Fehler (im DEV-C++). Nun habe ich es in Visual C++ kopiert, dort funktionert der gleiche Quelltext. 🙄

    imho: Erfinder->Rad->Neu ... meist kommen damit 7eckige Räder raus ... rollt ja auch ... irgendwie ...

    Danke, aber ich bin nicht auf der Suche nach dem perfecktem Rad, sondern Meinem 🙂



  • Jetzt sollten einige Dateien erstellt werden, darunter auch eine, die bereits den Einstiegspunkt WinMain(...) enthält.
    Deinen kompletten Code kannst du nun in diese Funktion packen. cout und Konsorten funktionieren jetzt natürlich nicht mehr, für Ausgaben musst du bspw. MessageBox(0,"hier dein Text",0,0) bemühen.

    Ich habe leider ein deutschen Visual C++, wenn ich aber ein Win32-Projekt erstelle, und im Folgendem Diaglog auf Fertigstellen gehe, erhalte ich einige Datei aber das einzige was ich zu winmain() finde sieht so aus:

    int APIENTRY _tWinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPTSTR    lpCmdLine,
                         int       nCmdShow)
    

    Ich glaube mir das alles zu erklären kostet dich zu viel Nerven, von daher belasse ich es lieber dabei. Die aufblinkende Konsole ist zwar nicht schön aber ich denke man kann damit leben.



  • Das passt schon alles 😉
    Ich habe WinMain(...) geschrieben, die Punkte sollten bedeuten, dass hier noch ein paar Parameter stehen.
    Du hast ein _tWinMain, dies bedeutet, dass du sowohl für UNICODE als auch für MBCS kompilieren kannst (ganz grob: in UNICODE sind Zeichen [TCHAR aus tchar.h] wie 'a', 'b' etc. 2Byte groß, in MBCS ist ein TCHAR 1 Byte groß).
    Du solltest aber für dein Projekt MBCS einstellen (Projekteigenschaften-General). UNICODE würde nur weitere Probleme mit sich bringen.
    Was in der Konsolenanwendung main() ist, heißt in der Windowsanwendung WinMain oder _tWinMain. Alles, was bei deiner Konsolenanwendung jetzt unter main() steht, kannst du kopieren und unter _tWinMain einfügen. Die couts kannst du natürlich löschen und durch MessageBox-Aufrufe ersetzen (siehe msdn http://msdn.microsoft.com/en-us/library/ms645505%28VS.85%29.aspx).



  • Vicious Falcon schrieb:

    Die couts kannst du natürlich löschen und durch MessageBox-Aufrufe ersetzen

    Habe keine cout's, beim Ausführen soll ja gar nichts mitgeteilt werden.
    Ich hab das mal eingefügt, bekomme so ca 90 error 🙂
    meist "nicht deklarierter bezeichner"



  • <windows.h> inkludierst du, oder? Normalerweise geschieht dies in stdafx.h (Erstellung von precompiled headern). Welche Bezeichner sind denn unbekannt? Poste mal die _ersten_ Fehler, die weiteren sind meist nur Folgefehler.


Anmelden zum Antworten