binäres Schreiben mit MFC



  • Hallo Leute,

    mal wieder ne Frage von mir 😃 .

    Ich hab mir ein CStdioFile Object mit dem wohlklingenden Namen m_file angelegt.

    CStdioFile m_file;
    

    Anschließend erstellt er mir eine Datei die db_sf.dat heißt. Dort hab ich den Flag CFile::typeBinary .

    m_file.Open("C:\\winnt\\db_sf.dat",CFile::modeCreate | CFile::modeReadWrite | CFile::typeBinary ,NULL);
    

    Soweit so gut. Doch wenn ich nun einen CString mit WriteString in die Datei schreibe und anschließend die Datei mit Notepad öffne steht der String in Reinschrift da. Wie schaff ich es das e mir die Daten binär in die Datei schreib ? 😕
    Das ist ziemlich brennend da ich eine Datenbank mitplotten muß aber die Ergebnisse nicht für jeden einsehbar sein dürfen.



  • Hast du angenommen das mit typeBinary alles in die Datei mit Ascii '1' und Ascii '0' hineingeschrieben wird?

    typeBinary heisst nur das die Datei nicht im TextModus geöffnet wird. Ein 'A' bleibt aber trotzdem ein 'A' egal ob Textmodus oder BinärModus. Der Unterschied ist das im TextModus Zeilenweise eingelesen werden kann.

    Wenn der Text nicht zu lesen sein sollte dann musst du ihn schon verschlüsseln.

    Oder du wandelst wirklich alles in '0' und '1' um - da wird aber alles ums 8fache größer

    [ Dieser Beitrag wurde am 21.08.2002 um 17:34 Uhr von Nemesyzz editiert. ]



  • @Nemesyzz

    Irgendwie hatte ich das gedacht. Bei den alten Schreibfunktionen aus C Tagen die in ASCII schrieben ging das ja . Naja dann doch mit einem eigenen Schlüssel und mehr Rechenleistung.

    Aber jetzt bin ich wenigstens Sicher das ich keinen Fehler gemacht habe.



  • Bei mir ist das Problem genau das Gegenteil....
    Ich speichere in einer Datei und möchte das als reine Text haben... nur bei mir wird trotzdem binär gespeichert(denke ich)... also am Ende der Datei sind komische zeichen...

    CFile dateischreiben( m_path, CFile::modeWrite | CFile::typeText);
    

    Wie gesagt, alles funktioniert bis auf die tatsache dass es nicht als reiner Text gespeichert wird...
    Danke im voraus...



  • Kann mir keiner helfen???



  • -> CStdioFile & CStdioFile::Write/ReadString

    Wenn du aber unbedingt mit CFile schreiben willst dann musst du bei CFile::Write
    die länge des Strings angeben. Entweder CString::GetLength oder (l)strlen.



  • Danke Nemesyzz, werde gleich ausprobieren...


Anmelden zum Antworten