Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Kann man CString einer Funktion übergeben?

Empfohlene Antworten

Veröffentlicht

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

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 :)

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

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 ]

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

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.

Hiilfe, versteht mich denn keiner? ;):D

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

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

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

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(); 

worauf es dir ankommt, ist glaube ich SeekToEnd...

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

<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>

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.

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

<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>

Hi

@all dies wissen

Gibt es bei CFile kein equal der fstream.h Eigenschaft "a+" (Nur anhängen, wenn nicht vorhanden erstellen) ?

MfG

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.