Koordinaten aus Textfile einlesen.
-
Ich habe mir eine Datei "demo.txt" auf C: erstellt. Da steht drin:
123 123
234 345
456 678Dann habe ich mir ein neues, leeres Projekt erstellt und habe einen Button eingefügt mit einer entsprechenden Funktion dazu. In diese Funktion habe ich deinen Code 1:1 reinkopiert und siehe da, in der MessageBox steht "123 123". Dein Fehler muss woanders liegen. Möglicherweise kann die Datei aus welchen Gründen auch immer nicht gelesen werden. Da wäre so ein if wie da oben beim Open(...) hilfreich.
-
Hallo :: No Name ::,
wenn ich Deinen Code verwende, erhalte ich als Fehlermeldung:
... error C2660: 'CFile::Read': Funktion akzeptiert keine 1 Argumente
in der Hilfe wird
virtual UINT Read(
void* lpBuf,
UINT nCount );vorgeschlagen, damit komme ich aber leider auch nicht wirklich zurecht...
Ciao
Yvonne
-
Hallo isabeau,
ich habe es genauso gemacht wie Du, aber es funktioniert leider trotzdem nicht.
Mein Code lautet nun:CString filename = "C:\\demo.txt";
CString LineToRead;
CStdioFile myFile;if(myFile.Open(filename, CFile::modeRead)){//Datei öffnen
myFile.ReadString(LineToRead);
AfxMessageBox(LineToRead);
myFile.Close();
}
else{
AfxMessageBox("Datei nicht zu öffnen");
}Die Datei scheint geöffnet zu werden, denn der else-Zweig wird nicht ausgeführt.
Meine Test-TextDatei habe ich mit dem Windows-Editor geschrieben, kann es daran
liegen? - dürfte nicht, oder?Ciao
Yvonne
-
Es liegt nicht daran das es mit dem Windows-Editor geschrieben ist.
Öhhm, hab vergessen, es heißt ReadString() und nicht nur Read() ...Viel Glück
Gruß
:: NoName ::
-
Mmmmhhhh,... sehr mysteriös...
Auch dieser Code funktioniert bei mir, wenn ich ihn kopiere und ohne Änderung hier einfüge.
Vielleicht hilft ja im Menü ein
Erstellen -> Bereinigen
und dann ein
Erstellen -> Alles neu erstellen.
Mehr fällt mir im Moment auch nicht ein.
-
CFile und ReadString verträgt sich nicht...
error C2039: 'ReadString': Ist kein Element von 'CFile'
...
Ich habe jetzt ein Konsolenprogramm geschrieben, mit dem es funktioniert:int main() // liefert 1 bei Fehler
{
// Eingabestream oeffnenifstream fin ("C:\\demo.txt",ios::binary);
if (!fin)
{
cout << "C:\\demo.txt" << " kann nicht zum Lesen geoeffnet werden\n";
return(1);
}char ch;
while ( fin.get(ch)){
if ((ch > 0)|| ch == '\n' || ch == '\t' )
cout << ch;
}fin.close();
}
warum kann ich mir allerdings nicht erklärenAllerdings weiß ich noch nicht, ob ich es gebrauchen kann, die AfxMessageBox
akzeptiert zumindest schon mal kein char als Parameter.
Außerdem wäre mir immer noch die MFC-Lösung lieber (also CFile etc.)
-
Hallo,
warum auch immer, wenn ich die Datei als .dat speichere und nicht als .txt funktionierts
Vielen Dank für Eure Geduld und bisherige Hilfe.
Wenn mir jetzt noch jemand sagen könnte, wie ich jetzt Zeile für Zeile einlese
und die Werte in ein Array u./od. einen Vektor speichern kann (die Werte einer Zeile entsprechen der x- bzw. der y-Koordinate), wäre ich für heute glücklich und zufrieden.Viele Grüße
Yvonne
-
Uuups (
)
Also hab ich mich doch nicht geirrt, es hieß Read() und nicht ReadString() ...
Hmm...wirklich sehr mysteriös! Warum erscheinen nur Fehler bei dir, die bei mir und isabeau nicht erscheinen ...Also, vielleicht bringts ja was wenn du es so schreibst :
file.Read(LineToRead, 100);
So wird der Text in der Datei stückchenweise eingelesen. Allerdings musst es dann in einer while-Schleife packen :
CString LineToRead; CFile file; if(file.Open("C:\\Demo.txt", CFile::modeRead)) { while( file.Read(LineToRead, 100)) { //Hier vielleicht den Text aus der Datei in eine Liste eintragen oder so... } file.Close(); }
Hoffe konnte dir jetzt mal helfen..
Gruß
:: NoName ::
-
Also alle Zeilen einzeln einlesen kannst du mit ReadString(), vielleicht wäre es sinnvoll mal im Board danach zu suchen !?
Gruß
:: NoName ::
-
wollte grad das selbe schreiben wie du, NoName... mist, da war ich wohl zu spät
schau dir mal getline() an -> Zeilenweise einlesen
okay NoName, hab deinen Post zu spät gelesen...