Fehler bei Ausgabe von text datei



  • hiho,

    ich habe ein Programm geschrieben mit eurer Hilfe, dass einen Lese Button und einen Schreib Button hat[von Texten]

    Nun schreibt er schön in die Datei rein, aber er liest etwas ganz anderes raus.
    Er spuckt etwas ganz anderes raus .
    Vllt findet ihr ja den Fehler.

    Schreibe Button :

    void __fastcall TfrmMain::btnSchreibenClick(TObject *Sender)
    {
    if(fileexists){
    Reset();
    }
    fseek(meineDatei,0,SEEK_SET);
    const char *s = edtDaten->Text.c_str();
    fwrite(s,sizeof(char),strlen(s),meineDatei);
    }
    

    Lese Button :

    void __fastcall TfrmMain::btnLesenClick(TObject *Sender)
    {
    char *cBuffer = new char[8];                //erstellung eines char arrays mit der größe 8
    fread(cBuffer,sizeof(char),8,meineDatei);
    
    Memo1->Lines->Add(new char);
    
    }
    

    $^Š Das spuckt er aus, wenn ich das wort affe speicher und lade.



  • Hallo

    Wie bereits in diesem Thread : deine Zeichenkette muß nullterminiert sein. Außerdem hast du vergessen deinen reservierten Speicher wieder freizugeben. Und warum du an Add(...) einfach einen nochmal neu erstellten char übergibst ist auch unklar.

    char *cBuffer = new char[8];                //erstellung eines char arrays mit der größe 8
    fread(cBuffer,sizeof(char),8,meineDatei);
    cBuffer[7] = 0; // Mit einer 0 abschließen
    
    Memo1->Lines->Add(cBuffer); // cBuffer übergeben
    delete cBuffer; // reservierten Speicher löschen
    

    Aber warum bestehst du darauf mit veralteten, fehleranfälligen C-Mitteln zu arbeiten? Benutzt AnsiString, TStringList, LoadFromFile... alles besser als das was du hast.

    bis bald
    akari



  • Also gerade bei Textdateien finde ich TStringList mit den Funktionen LoadFromFile und SaveToFile sehr praktisch. Funktioniert garantiert und ist schnell zu implementieren 🙂


Anmelden zum Antworten