ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
562
562
EMPFEHLEN
-
Ich habe folgendes Problem:
Nachdem ich eine Datei geöffnet habe im Programm in einer EditBox, zeigt diese mir folgendes an:
Willkommen in den Nutzungsbedingungen!
Hier finden Sie informationen!ÌÌÌÌÌÌÌÌÌÌÌ.........
Und diese Sonderzeichen stehen nicht in der Textdatei. Ich habe schon überall gesucht aber noch keine richtige Antwort gefunden. Über Hilfe bin ich Dankbar.
Hier der Quelltext beim Laden der Datei:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
void CLESEN::OnShowWindow(BOOL bShow, UINT nStatus) { CDialog::OnShowWindow(bShow, nStatus); UINT nActual = 0; char str[1000]; CFile datei( L"D:/Testdatei.txt", CFile::modeRead); str[nActual] = 0; datei.Read( str, sizeof( str ) ); datei.Close(); m_strEdit = str; UpdateData(false); }
Wichtig: Ich benutze Visual Studio 2005.
MfG,
PuMi
-
Du hast keinen Null-Terminator eingesetzt.
CFile::Read gibt dir die Anzahl der gelesenen Bytes zurück. Pack den Wert in eine Variable und benutze ihn zum Setzen des Null-Terminators:
Code :1 2 3 4 5 6 7 8
CFile datei( L"D:/Testdatei.txt", CFile::modeRead); str[nActual] = 0; UINT dwBytesRead = datei.Read( str, sizeof( str ) ); datei.Close(); str[dwBytesRead] = 0;
Anmerkung: Wenn die Datei genau 1000 Zeichen lang ist, schreibt der Null-Terminator drüber raus. Also am besten bei CFile::Read die Grösse des Puffers minus eins übergeben, dann ist da auf jeden Fall noch Platz.
-
Ich habe unter dem Link www.coding-help.de gesucht und habe dort auch vor deinem Beitrag schon eine Lösung gefunden. Dann habe ich noch eine Prüfung zu der Funktion gefunden - die Seite hat mich übrigens deutlich weiter gebracht
!
Aber hier der Code, den ich jetzt habe:
Leider dachte ich nicht daran, zu schreiben, das ich eine Lösung gefunden habe.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
CStdioFile DateiLaden; CString strDateiName, strTemp; m_strEdit=""; // Kompletten Pfad der Anwendung ermitteln strDateiName = GetCommandLine(); // Dateierweiterung abschneiden int nPos = strDateiName.ReverseFind( '//'); strDateiName = strDateiName.Mid(1, nPos-1); strDateiName += "D://Testdatei.txt"; int Result; if(DateiLaden.Open(strDateiName, CFile::modeRead)) { while(DateiLaden.ReadString(strTemp)) { // Datei zeilenweise auslesen m_strEdit = m_strEdit + strTemp + L"\r\n"; } DateiLaden.Close (); UpdateData(false); } else { Result = MessageBox(L"Datei Testdatei.txt wurde nicht gefunden. Wiederholen?", L"", MB_YESNO | MB_ICONSTOP); switch(Result) { case IDYES: { if(DateiLaden.Open(strDateiName, CFile::modeRead)) { while(DateiLaden.ReadString(strTemp)) { m_strEdit = m_strEdit + strTemp + L"\r\n"; } DateiLaden.Close (); UpdateData(false); } else { MessageBox(L"Trotzdem Fehlgeschlagen. Breche suchen ab.", L"", MB_OK | MB_ICONSTOP); m_strEdit = L"Datei wurde nicht gefunden!"; UpdateData(false); } } break; } }
MfG, PuMi
Ähnliche Themen
-
Größe einer Datei lesen
Von Affenpisse im Forum Sonstige SprachenAntworten: 14Letzter Beitrag: 04.12.09, 15:43 -
double aus editbox lesen/schreiben
Von ElCidtheKnight im Forum C/C++Antworten: 0Letzter Beitrag: 03.11.07, 21:40 -
lesen und schreiben einer XML Datei
Von Reverent im Forum .NET DatenverwaltungAntworten: 1Letzter Beitrag: 14.05.07, 17:06 -
[C]Text aus einer Datei lesen und dann in einer anderen schreiben
Von PuMi2006 im Forum C/C++Antworten: 1Letzter Beitrag: 24.01.07, 18:19 -
[C++] Daten aus einer EditBox in eine Text Datei schreiben
Von HansJ im Forum C/C++Antworten: 6Letzter Beitrag: 27.10.05, 17:05





Zitieren
Login






