Koordinaten aus Textfile einlesen.



  • Ich habe mir eine Datei "demo.txt" auf C: erstellt. Da steht drin:
    123 123
    234 345
    456 678

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

    ifstream 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ären 😡

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


Anmelden zum Antworten