Veröffentlicht 6. Juli 200124 j Hi, also wie oben schon gesagt. Ich habe einen CString "Status" der wird von unterschiedlichen Aktionen verändert. Ich will eine Funktion haben, an die ich Status übergebe, und der Inhalt in eine Datei geschrieben wird. Soll sowas wie ein trace sein. Ich hab das bis jetzt so: ****************************************************** Deklaration ****************************************************** int protokoll(CString Status); ****************************************************** Aufruf ****************************************************** Status = "Hallo"; protokoll(Status); ****************************************************** Funktion ****************************************************** int CSockDlg::protokoll(CString Status) { //PROTOKOLLIEREN CFile datei; BOOL bRet = datei.Open( "C:\\trace.txt", CFile::modeWrite); datei.Write( Status, 100 ); datei.Close(); return 0; } Thnx4Help
6. Juli 200124 j Dann versteh ich jetzt aber nicht ganz dein Problem! Funktioniert es so oder funktioniert es so nicht??? Wenn nicht, dann würd ich das ganze mal mit einem Zeiger auf die Variabel Status ausprobieren!! Sonic83
6. Juli 200124 j Hab es gefunden, die "modeWrite" erzeugt keine Datei, wenn sie also nicht da ist bekommt man einen Fehler. Nur wie öffne ich denn eine Datei, um etwas an das vorherige anzufügen? Thnx4Help
6. Juli 200124 j du must modeCreate mit angeben. sonst muss die datei schon exitieren. ich hoffe, das der modus so heist. BOOL bRet = datei.Open( "C:\\trace.txt", CFile::modeWrite | CFile::modeCreate); etwa in der art [ 06. Juli 2001: Beitrag editiert von: maddin ]
6. Juli 200124 j Ist richtig, aber dann ist das Problem, dass er das neue, was reinsoll nicht an das hängt was da war, sondern alles alte löscht, bei jedem mal. Ich will ja, dass die einträge immer unten angehangen werden. Thnx4Help
6. Juli 200124 j Hi, dann check doch einfach vorher, ob die Datei da ist. Wenn mode::Write nen Fehler zurück gibt (=Datei nicht vorhanden) machst Du es halt mit mode::Create nochmal.
6. Juli 200124 j Hiilfe, versteht mich denn keiner? Ich mach es jetzt so, dass ich die Datei per hand erzeuge. Ich will nun bei jedem Aufruf die Datei öffnen, und den neuen Status reinschreiben, ohne, dass der alte gelöscht wird, also 15:33:48 STATUS: Keine Fehler 15:33:52 STATUS: Übertragung erfolgreich 15:33:58 STATUS: Verbindung zu Host getrennt. das das dann so aussieht. Thnx4Help
6. Juli 200124 j versuchs mal mit CFile::modeCreate | CFile::modeNoTruncate dann sollte es klappen. CFile::modeCreate -> File erstellen / öffnen und neu beginnen CFile::modeNoTruncate -> neu beginnen des File verhindern
6. Juli 200124 j Nope, das klappt auch nicht, weil CFile::modeNoTruncate nur in verbindung mit modeCreate einzusetzen ist, damit der File, wenn er existiert nicht neu erstellt wird. Aber nicht für modeWrite. Weiß nicht mehr weiter Thnx4Help
6. Juli 200124 j probiere es mal so: CStdioFile pfchLog ( tempFileName, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite ); pfchLog.SeekToEnd(); CString text; tempData.Format ("??", egal was); pfchLog.WriteString ( tempData ); pfchLog.Close();
6. Juli 200124 j Genau das hab ich gesucht!! Thnx. Aber wie wende ich das jetzt an, also wie sage ich der Write funktion dass sie wirklich erst der Stelle anfangen soll, die SeekToEnd zurückgibt? Thnx4Help
6. Juli 200124 j <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Armand 2k: <STRONG>probiere es mal so: pfchLog.SeekToEnd(); </STRONG>
6. Juli 200124 j indem du erst das file öffnest, dann die funktion SeekToEnd aufrufst und danach anfängst zu schreiben. wie im beispiel von armand 2k zu sehen ist. die funktion SeekToEnd ist nämlich dazu gut um die aktuelle position ans ende der datei zu versetzen. und die aktuelle position ist die position, an der geschrieben und gelesen wird.
6. Juli 200124 j Wahnsinn, jetzt funktionierts. Danke an alle. Nur dass er mir nach dem eigentlichen CString noch ein bißchen Müll in die Datei reischreibt, und keinen Zeilenumbruch nach den einzelnen Einträgen macht. Thnx4Help
6. Juli 200124 j <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von FaFo: <STRONG>Wahnsinn, jetzt funktionierts. Danke an alle. Nur dass er mir nach dem eigentlichen CString noch ein bißchen Müll in die Datei reischreibt, und keinen Zeilenumbruch nach den einzelnen Einträgen macht. Thnx4Help</STRONG>
6. Juli 200124 j Hi @all dies wissen Gibt es bei CFile kein equal der fstream.h Eigenschaft "a+" (Nur anhängen, wenn nicht vorhanden erstellen) ? MfG
6. Juli 200124 j Stimmt, hab das \r vergessen. Nagut, jetzt funktioniert. Danke an alle, und noch einen schönen Tag bei diesem geilen Wetter. Greetz
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.