CStdioFile-Problem "Schreiben"



  • Hallo ich bin der Axel und habe ein Problem.

    Nach Lesen von Strings aus einer Datei (mit ReadString) möchte ich bestimmte Strings überschreiben durch neue.
    Der Schreibbefehl WriteString wird aber ignoriert. Wer kann helfen?

    Danke schon mal und cu Axel



  • hast du die datei vielleicht nur als CFile::modeRead geöffnet???

    zum schreiben brauchste CFIle::modeWrite | CFile::modeCreate falls sie noch nicht vorhanden ist!

    CStdioFile f;
        CString m_LogFileName = "File.log";
    
        if (f.Open (m_LogFileName, CFile::modeWrite) == FALSE)
        {
            if (f.Open (m_LogFileName, CFile::modeCreate | CFile::modeWrite) == TRUE)
            {
                f.WriteString(cstrZeit + "    " + cstrZeile + '\n');
                f.Close();
            }
        }
        else
        {
            f.SeekToEnd();
            //f.WriteString("#####################################\n");
            f.WriteString(cstrZeit + "    " + cstrZeile + '\n');
            f.Close();
        }
    

    [ Dieser Beitrag wurde am 30.07.2002 um 16:08 Uhr von Frenzy editiert. ]



  • Nein, habe sie mit "Mitarbeiter_File.Open( file_name , CFile::modeReadWrite ) " geöffnet.
    Genauere Problembeschreibung: Es geht um eine Kennwortprüfung.
    Wenn der Mitarbeiter 4* das falsche Kennwort eingegeben hat, soll das in der Datei gespeicherte Kennwort überschrieben werden durch ein "Sonderkennwort",
    um ein nochmaliges Einloggen generell (auch mit dem richtigen Kennwort) zu unterbinden.



  • Dann mußt du sie schließen und mit modeWrite öffnen und dein neues PW eintragen wie ich es oben hingepostet habe.

    Da die Datei existiert, kannst Du Dir die Abfrage mit CFile::modeWrite | CFile::modeCreate auch schenken.



  • Wie kann ich denn dann das alte Kennwort überschreiben? D.h. wie komme ich zu der Stelle, wo das alte Kennwort liegt?
    Deine Methode erlaubt doch glaube ich nur ein Anhängen des neuen Kennworts am Dateiende, oder?



  • Original erstellt von <Axel>:
    Wie kann ich denn dann das alte Kennwort überschreiben? D.h. wie komme ich zu der Stelle, wo das alte Kennwort liegt?
    Deine Methode erlaubt doch glaube ich nur ein Anhängen des neuen Kennworts am Dateiende, oder?

    du musst den text durchlesen bis du das alte kennwort gefunden hast. dann merkst du dir die stelle und ersetzt das alte kennwort einfach durch das neue!!!



  • Wie kann man sich die Stelle merken (soll ja wohl im Read-Modus gesucht werden oder?) ? Wie kann man dann im Schreibmodus dorthin gelangen?
    Wozu gibt es dann einen Modus "modeReadWrite", wenn man die Datei erst schließen und mit modeWrite wieder öffnen muß?



  • 🙂



  • Ich meine das machst du mit CFile::GetPosition()

    steht in der MSDN ausführlich meine ich



  • Aufpassen:
    Wenn du ab einer gewissen Position in die Datei schreibst, wird das vorhandene überschrieben und nicht ergänzt!
    D.h. nur falls dein neues Passwort genauso lang ist wie dein altes oder du eine feste Länge für das Speichern des Passwortes vorgesehen hast, ist alles ok.


Anmelden zum Antworten