Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Was ist falsch?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.04.2004, 19:14 Uhr
Bart



Ich möchte ein Programm machen, welches ein Text welchen man in ein Edit-Feld eingeben muss, mit demjenigen aus einer Datei vergleicht. Aus der Datei soll aber immer nur zeilenweise gelesen werden. Ich hab dazu folgenden Code gschrieben:


C++:
char *EditText;
EditText = new char[30];
char *FileText;
FileText = new char[30];
FILE *f;
f = fopen("EW.dat", "r");
fgets(FileText, (int)FileText, f);
fclose(f);

SendMessage (hEdit, WM_GETTEXT, 30,
                     (LPARAM) EditText);


        if (lstrcmp(EditText,FileText) != 0)
        {
        MessageBox(hWnd, "Fehler", "Fehler
                        MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1);

        }




Aber irgendwie funktioniert es nicht mit dem zeilenweise auslesen. Wenn ich z.B in die Datei auf die erste Zeile Zeile1 schreibe und ins Edit-Feld Zeile1 gebe ist es richtig. Wenn ich aber in die Datei auf die Erste Zeile Zeile1 schreibe und auf die zweite Zeile Zeile2 schreibe und dann ins Editfeld Zeile1 schreibe ist es nicht richtig.

Warum?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.04.2004, 19:29 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Hast du dir die Beschreibung zu fgets mal angeschaut? Wieso castest du da den Zeiger auf dein character array in einen integer?!

Zu deinem eigentlichem Problem: das liegt daran das dann am Ende der ersten Zeile noch ein Zeilenumbruch dran ist, den solltest du entweder abschneiden oder an den Text aus der Editbox anfügen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.04.2004, 19:34 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ich vermute mal das du deine zeile nur mit einem carriage return beendet hast...
fgets versucht bis zum ersten newline zu lesen und deshalb liest der dann wohl weiter...

davon abgesehen ist der zweite parameter die maximale anzahl an zeichen die der versuchen soll zu lesen... in deinem fall sollte das dann bei einem buffer von 30 eine 29 sein weil der am ende ja noch ein byte zu terminieren des strings braucht
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.04.2004, 15:23 Uhr
Bart



Danke für die Antwort! Ich habe den Code einfach noch durch
C++:
lstrcat("EditText","\n");
erweitert und es scheint prima zu funktionieren. Jetzt habe ich aber noch eine Frage: Wie kann ich z.B aus der Zeile 150 einer Datei lesen?

Dieser Post wurde am 19.04.2004 um 15:24 Uhr von Bart editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.04.2004, 16:48 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


leider gibts kein springe bis zur zeile 150... das musst du von hand machen und so lange weiterzählen bis du 149 mal \n gefunden hast...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: