C++ Programm wird nicht mehr richtig ausgeführt!



  • xHilfe123 schrieb:

    Mein Problem ist das sobald ich die system() funktion nutze alle Zeitfunktionen falsche ergebnisse liefern...
    kann mir das jemand erklären ??

    Hast du beachtet, dass Funktionen wie localtime einen Zeiger auf eine statisch alloziierte Struktur zurückliefern, deren Inhalt sich durch nachfolgende Aufrufe von Zeitfunktionen ändern kann?


  • Mod

    xHilfe123 schrieb:

    Skym0sh0 schrieb:

    Lol, dann zeig auch mehr von deinem Code. So ist dein Code bisher zwar nicht gut (und unvollständig ohne main und so), aber doch richtig.

    Vor allem wenn du Rechnungen drumherum hast, dann sollten wir die sehen, um was dazu sagen zu können.

    der code ist relativ umfangreich... ist eher schlecht hier zusammhängend code zuposten...

    Minimalbeispiel erstellen! Der Thread ist nicht umsonst als Wichtig markiert.

    Ohne ein solches Beispiel ist dieser Thread hier bloß ein Ratespiel, bei dem der Fragesteller nicht einmal die richtige Antwort kennt. Also komplett sinnlos.



  • MFK schrieb:

    xHilfe123 schrieb:

    Mein Problem ist das sobald ich die system() funktion nutze alle Zeitfunktionen falsche ergebnisse liefern...
    kann mir das jemand erklären ??

    Hast du beachtet, dass Funktionen wie localtime einen Zeiger auf eine statisch alloziierte Struktur zurückliefern, deren Inhalt sich durch nachfolgende Aufrufe von Zeitfunktionen ändern kann?

    ja ich wusste das aber ich wusste nicht das deren inhalt sich durch nachfolgende aufrufe ändern kann...

    das würde bei mir aber nur zu einem fehler führen wenn system() solche Inhalte ändert... kann soetwas sein? bzw. macht system() soetwas? hat doch eigentlich nichts mit zeit zutun?

    SeppJ schrieb:

    Ohne ein solches Beispiel ist dieser Thread hier bloß ein Ratespiel, bei dem der Fragesteller nicht einmal die richtige Antwort kennt. Also komplett sinnlos.

    entschuldigung hab ich nicht gesehen und gelesen...
    ich bastel schnell eins zusammen... 5 min ...



  • xHilfe123 schrieb:

    SeppJ schrieb:

    Ohne ein solches Beispiel ist dieser Thread hier bloß ein Ratespiel, bei dem der Fragesteller nicht einmal die richtige Antwort kennt. Also komplett sinnlos.

    entschuldigung hab ich nicht gesehen und gelesen...
    ich bastel schnell eins zusammen... 5 min ...

    5 Minuten sind schon lange rum 😃



  • Skym0sh0 schrieb:

    xHilfe123 schrieb:

    SeppJ schrieb:

    Ohne ein solches Beispiel ist dieser Thread hier bloß ein Ratespiel, bei dem der Fragesteller nicht einmal die richtige Antwort kennt. Also komplett sinnlos.

    entschuldigung hab ich nicht gesehen und gelesen...
    ich bastel schnell eins zusammen... 5 min ...

    5 Minuten sind schon lange rum 😃

    Sind Arbeitgeberminuten 😉



  • entschuldigt aber mir ist eben aufgefallen das der fehler nicht da lang wo ich vermutet hatte...
    zwischenzeitlich ging die ftlastwritetime() da dachte ich das dort der fehler nicht liegen kann aber dort kommen sinnlose ergebnisse nicht bei system()..

    schaut es euch mal an... vll kann mir jemand nen tipp geben wie ich ne verlässliche ftlastwritetime() bekomme...

    main.cpp

    #include <sys/types.h>
    #include <windows.h>
    #include <winnt.h>
    #include <ctime>
    #include <iostream>
    #include <string>
    
    #include "event_log.h"
    
    int main()
    {
    	//struct tm *localtime(const time_t *timer);
    	time_t zeitstempel_in_tagen;
    	time_t zeitvergleich;
    	time_t zeitstempel;
    	tm *jetzt;
    	tm *file;
    
    	zeitstempel=time(NULL);
    	jetzt=localtime(&zeitstempel);
    
    	FILETIME datei_zeitstempel;
    	SYSTEMTIME system_zeitstempel;
    	WIN32_FIND_DATA wfd;
    
    	//time(NULL) liefert die anzahl der sekunden seit 1.1.1970 zurück!
    
    	zeitstempel_in_tagen= (((zeitstempel/60)/60)/24);
    
    	//Zeitwerte
    	std::cout << jetzt->tm_mday << "/" << jetzt->tm_mon+1 <<"/" <<jetzt->tm_year+1900 << std::endl;
    	std::cout <<"Sekunden: " << zeitstempel << std::endl;
    	std::cout <<"Tage: " << zeitstempel_in_tagen << std::endl;
    
    	//event_schreiben(meldungstext,"SUCCESS");
    	FindFirstFile("C:/../../../../x.txt",&wfd);
    	std::cout<<wfd.cFileName<<std::endl;
    	datei_zeitstempel=wfd.ftLastWriteTime;
    
    	FileTimeToSystemTime(&datei_zeitstempel, &system_zeitstempel);
    
    	zeitvergleich = TimeFromSystemTime(&system_zeitstempel);
    	zeitstempel_in_tagen= (((zeitvergleich/60)/60)/24);
    
    	std::cout << "zeitvergleich-time_t-inTagen: " << zeitstempel_in_tagen << std::endl;
    
    	std::cout << "zeitvergleich-time_t: " << zeitvergleich << std::endl;
    }
    

    funct.cpp

    #include <sys/types.h>
    #include <windows.h>
    #include <cstdlib>
    #include <cstring>
    #include <ctime>
    #include <string>
    
    time_t TimeFromSystemTime(const SYSTEMTIME *pTime)
    {
    struct tm tm;
    memset(&tm, 0, sizeof(tm));
    
    tm.tm_year = pTime->wYear -1900;
    tm.tm_mon = pTime->wMonth -1;
    tm.tm_mday = pTime->wDay;
    
    tm.tm_hour = pTime->wHour;
    tm.tm_min = pTime->wMinute;
    tm.tm_sec = pTime->wSecond;
    
    return mktime(&tm);
    }
    

    funct.h

    /*
     * event_log.h
     *
     *  Created on: 15.09.2014
     *      Author: claeseke
     */
    
    #ifndef EVENT_LOG_H_
    #define EVENT_LOG_H_
    
    time_t TimeFromSystemTime(const SYSTEMTIME *pTime);
    
    #endif /* EVENT_LOG_H_ */
    

    sry das es kurz gedauert hat... 😃



  • Lektion 1: Rückgabewerte prüfen



  • hab den fehler gefunden und behoben... vielen dank!! 👍

    thema und thread kann geschlossen werden!! *close*


  • Mod

    xHilfe123 schrieb:

    entschuldigt aber mir ist eben aufgefallen das der fehler nicht da lang wo ich vermutet hatte...

    Lass mich raten: Das ist dir aufgefallen während des Erstellens des Minimalbeispiels? Das ist kein Zufall. Du kannst hoffentlich etwas daraus lernen.



  • SeppJ schrieb:

    xHilfe123 schrieb:

    entschuldigt aber mir ist eben aufgefallen das der fehler nicht da lang wo ich vermutet hatte...

    Lass mich raten: Das ist dir aufgefallen während des Erstellens des Minimalbeispiels? Das ist kein Zufall. Du kannst hoffentlich etwas daraus lernen.

    😃
    jop klar hab ich was gelernt ...

    1. beim erstellen des minimal beispiels fallen fehler sehr gut auf...! 🙂

    2. das nächste mal bekommt ihr ein ordentliches minimal beispiel gleich von anfang an... !

    vielen dank an alle tipps und antworten...
    bis später
    lg


Anmelden zum Antworten