Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Fehler beim Auslesen aus einer Datei

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 < [ 2 ] [ 3 ] [ 4 ]
000
29.07.2004, 12:05 Uhr
~Tanja
Gast


Hi,

Ich würde mich sehr freuen, wenn mir jemand bei meinem Problem behilflich wäre.
Ich lese eine Textdatei aus, die so aufgebaut ist:

Datei.txt:

1.Zeile;
2.Zeile;
3.Zeile;
usw.

Die Ausgabe der Textdatei soll in eine ComboBox geschrieben werden.

Mein Pgm-Code sieht so aus:
char str[100];
CString fileRep;
CFile datei("Datei.txt", CFile::modeRead);
fileRep = datei.Read(str, sizeof(str));

m_repository.AddString(fileRep);

UpdateData(FALSE);

Leider, bekomme ich lediglich die Ausgabe: | in meinem Member.

Ich weiss nicht wieso?

...und danke schon mal im Voraus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.07.2004, 12:24 Uhr
Tommix



Hallo,
fileRep = datei.Read(...
Der Rückgabewert von CFile::Read ist die Anzahl der gelesenen Bytes! Ich würde das eher so machen:

C++:
CStdioFile file("Datei.txt", CFile::modeRead | CFile::typeText);
CString fileRep;

while(file.ReadString(fileRep))
{
  m_repository.AddString(fileRep);
}

UpdateData(FALSE);



Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.07.2004, 13:30 Uhr
~Tanja
Gast


Vielen vielen Dank!
Das hat super geklappt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.07.2004, 13:40 Uhr
~Tanja
Gast


Allerdings habe ich gerade festgestellt, dass die Trennzeichen ';' mit ausgegeben werden.
Das möchte ich doch eigentlich vermeiden.

Was kann ich dagegen tun?

Tanja
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.07.2004, 14:13 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


für was das trennzeichen wenn es eh jedes in einer neuen zeile ist?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.07.2004, 15:12 Uhr
Tommix



Naja, wenn es denn schon mal mit drin steht...

C++:
//...
  fileRep.TrimRight(';');
  m_repository.AddString(fileRep);
//...



- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.07.2004, 15:46 Uhr
~Tanja
Gast


Naja, eigentlich habe ich aus Faulheit die Zeilen gekürzt. Die Zeilen sind vollständig beschrieben. Die einzelnen Werte sind dann mit dem Trennzeichen getrennt.

Ich habe in der Zwischenzeit auch mal was ausprobiert, was ich im Forum entdeckt habe, aber leider hängt sich dann das Programm auf.

Code aus dem Forum:

C++:
CStdioFile file("C:\\apps\\Flatfiles\\Repository.txt", CFile::modeRead);
CString fileRep;

char str[100];
int bytesRead = file.Read(str, sizeof(str));
str[bytesRead] = 0;
CString fileContent = str;
CString rep;
int StartIndex = 0;
do
{
    int EndIndex = fileContent.Find(";", StartIndex+1);
    for (int i=StartIndex+1; i<EndIndex; i++) {
        rep += fileContent.GetAt(i);
    }
    StartIndex = EndIndex;
} while (StartIndex<=fileContent.GetLength());



Wäre euch dankbar, wenn ihr mir das mal näher erläutern könntet.

Ach so, danke noch für den Code.
Versuch es auch mal damit...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.07.2004, 15:50 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


benutzte zum dateine lesen nie diese nich ansi- sachen aber ohne lange zu gucken fällt mir das hier auf


C++:
char str[100];
int bytesRead = file.Read(str, sizeof(str));


hier liest du bis zu 100 zeichen ein...
um ggf das 101. mit 0 zu termineren also mit str[bytesRead] = 0; (falls man 100 eingelesen hat) fehlt ein zeichen im speicher ->speicherzugriffsfehler...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.07.2004, 15:58 Uhr
~Tanja
Gast


Danke an alle für die tolle Hilfe, habe ein ganzes Stück mehr dazu gelernt

Habe jetzt einfach den Code von Tommix genommen. Der ist einfach übersichtlicher und funktioniert im Gegensatz zum anderen.

Grüße, Tanja
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
29.07.2004, 16:05 Uhr
~Tanja
Gast


...Das Einlesen funktioniert zwar, trennt aber nicht die Werte, die in einer Zeile mit einem Semikolon getrennt wurden.

Könnte mir da vielleicht noch jemand auf die Sprünge helfen?

Tanja
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ VC++ / MFC ]  


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: