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