File-Handling



  • Hallo allerseits
    ich habe ein Prog, welches zu Begin eine log-Datei erzeugt ("C:\\Programme\\ ... \\MeinProjekt\\Settings.log"). In einem zweiten Schritt kopiere ich dann diverse Ordner/Files. Wenn ich dann am Schluss die log-Datei wieder öffnen will, falle ich beim Test in die Fehlerschleife...

    if(!LogDatei) 
    {
       //Fehler
    }
    else
    {
       // Speichern in die Datei 
    }
    

    Weiss jemand, an was das liegen kann? Die Datei wurde korrekt erzeugt.....

    Gruss Thomas



  • etwas mehr Code wäre hilfreich!



  • black_sheep_thomas schrieb:

    Hallo allerseits
    ich habe ein Prog, welches zu Begin eine log-Datei erzeugt ("C:\\Programme\\ ... \\MeinProjekt\\Settings.log"). In einem zweiten Schritt kopiere ich dann diverse Ordner/Files. Wenn ich dann am Schluss die log-Datei wieder öffnen will, falle ich beim Test in die Fehlerschleife...

    if(!LogDatei) 
    {
       //Fehler
    }
    else
    {
       // Speichern in die Datei 
    }
    

    Weiss jemand, an was das liegen kann? Die Datei wurde korrekt erzeugt.....

    Gruss Thomas

    schau erstmal nach http://if-schleife.de/
    und dann sag, was "am schluß" ist. so am schluß, daß die datei wieder zu ist? haste orgendwo LogDatei.close() aufgerufen (sollste eh nicht machen). warum überhaupt diese if-schleife? schreib doch einfach rein, und wenn's nicht klappt, klappt's halt nicht. wobei du natürlich einmal rausfinden mußt, warum's hier nicht klappt.



  • Hier bitte:

    const char szSettigFilePath[] = "Settings.log";
    char appPath[MAX_PATH];
    
    // ...
    
    // Den Pfad des Programmes ermitteln und an das Logfile anfügen
    GetModuleFileName(NULL,appPath,sizeof(appPath)); // liefert z.B. "c:\blupp\hallo.exe"
    PathRemoveFileSpec(appPath); // jetzt ist nur noch "c:\blupp" übrig
    sprintf(appPath,"%s\\%s",appPath,szSettigFilePath);
    
    // Die Datei erzeugen
    ofstream TempSettingFile(szSettigFilePath, ios::binary);
    if(!TempSettingFile)
         MessageBox(0,"Das Settingfile konnte nicht erzeugt werden",0,0);
    else
       TempSettingFile.close();
    
    // Nun wird mit FindFirstFile() und FindNextFile() gearbeitet
    // ...
    // ...
    
    // Daten in die Datei speichern
    ofstream SettingFile(appPath, ios::binary);
    if(!SettingFile)
    {
       // Hier falle ich beim Test jetzt rein, obwohl die Datei existiert
       MessageBox(0,"Das Settingfile konnte nicht aktuallisiert werden",0,0);
    }
    else
    {
       SettingFile.write((char*) &AKTUELLE_VERSION,sizeof(AKTUELLE_VERSION));
       SettingFile.write((char*) &m_startpfad,sizeof(m_startpfad));
       SettingFile.write((char*) &m_zielpfad, sizeof(m_zielpfad));
    }
    SettingFile.close();
    }
    
    // Ende des Programms
    


  • schreib doch einfach rein, und wenn's nicht klappt, klappt's halt nicht.
    

    auch ne' Einstellung.....
    kann man mal was mehr Code sehn'?Vielleich den Header...



  • Mehr Code wäre schon möglich, ist aber eine MFC-Klasse.

    Ich habe das Problem jedoch in der Zwischenzeit "gelöst". Das fstream-Obiekt jeweils wurde durch ein ifstream bzw. ofstream ersetzt und in in den einzelnen Methoden deklariert. -> Jetzt läuft es ohne zu Probleme.

    Gruss Thomas



  • Hi Thomas,
    neee,mit MFC kenn ich mich nu garnicht aus...Könntest mir da mal en' paar Tips geben wo man da ansetzt.....
    Ich doktor an der WIN32API rum und interessiere mich für Treiber und Kernel...also ganz unten im Keller gell!
    Bis dann



  • Welchen Zweck verfolgst du mit folgendem Code?

    // Die Datei erzeugen 
    ofstream TempSettingFile(szSettigFilePath, ios::binary); 
    if(!TempSettingFile) 
         MessageBox(0,"Das Settingfile konnte nicht erzeugt werden",0,0); 
    else 
       TempSettingFile.close(); // Erst öffnen, dann abfragen ob's geht und wenn ja, einfach wieder schließen???
    


  • PuppetMaster2k schrieb:

    Welchen Zweck verfolgst du mit folgendem Code?

    Der "Sinn" des Codes ist, eine leere Datei zu erzeugen. (ist aber in der aktuellen Programmversion nicht mehr enthalten)


Anmelden zum Antworten