fehler in lesefunktion von einer datei



  • hallo,

    habe in einer header datei folgenden code:

    bool MMHV::OpenRead_File(string file_name, int &anzahl_datensaetze, list<HV_Liste_Daten> &liste)
    {    ifstream in(file_name.c_str());
         if(in)
         {
         while(!in.eof())
         {    if(++zeile > 1)
              {
              getline(in, line_tmp);
              tmp = Filter_Line(line_tmp);
              liste.push_back (tmp);
              }               
         }
         anzahl_datensaetze = (int)liste.size();
         return true;
         }
         else return false;
    }
    

    Nach dem laufen des programms sagt er mir aber das "Der Vorgang "written" konnte nicht auf dem Speicher durchgeführt werden."

    Benutze Dev C++.

    Hoffe ihr könnt mir helfen.
    Gruß



  • Ich kenne die von Dir verwendete Programmier-Bibliothek MHV nicht. Es sieht so aus, dass Du die Datei nur zum Lesen, nicht auch zum Schreiben, geöffnet hast. Verwende einfach normale C++ Funktionen.



  • Lies Dir vielleicht mal das hier durch.



  • Hier mal alles komplett:

    MM_HV.h

    #include <string>
    #include <list>
    #include <fstream>
    #include <iostream>
    
    using namespace std;
    
    struct HV_Liste_Daten
    {      string datum;
           string tester;
           string pruefer;
    };
    
    class MMHV
    {     string line_tmp;
          int zeile;
          HV_Liste_Daten tmp;
    
          public:
          MMHV();
          bool OpenRead_File(string file_name, int &anzahl_datensaetze, list<HV_Liste_Daten> &liste);
          HV_Liste_Daten Filter_Line(string str_line);
    };
    

    MM_HV.cpp

    #include "MM_HV.h"
    MMHV::MMHV()
    {    zeile = 0;       
    
    }
    
    bool MMHV::OpenRead_File(string file_name, int &anzahl_datensaetze, list<HV_Liste_Daten> &liste)
    {    ifstream in(file_name.c_str());
         if(in)
         {
         while(!in.eof())
         {    if(++zeile > 1)
              {
              getline(in, line_tmp);
              tmp = Filter_Line(line_tmp);
              liste.push_back (tmp);
              }               
         }
         anzahl_datensaetze = (int)liste.size();
         return true;
         }
         else return false;
    }
    
    HV_Liste_Daten MMHV::Filter_Line(string str_line)
    {    if(str_line.find(';')!=string::npos)
         {    size_t pos1= str_line.find(';');
              size_t pos2= str_line.find(';',pos1+1);
    
         HV_Liste_Daten t;
    
         string trennen_tester;
         trennen_tester.append(str_line.begin()+pos1+1,str_line.begin()+pos2);
         t.tester  = trennen_tester;
    
         string trennen_datum;
         trennen_datum.append(str_line.begin(),str_line.begin()+pos1);
         t.datum  = trennen_datum;
    
         string trennen_pruefer;
         trennen_pruefer.append(str_line.begin()+pos2+1,str_line.end());
         t.pruefer = trennen_pruefer;
    
         return t;
         }
    }
    

    main.cpp

    #include <cstdlib>
    #include <iostream>
    #include "MM_HV.h"
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {   MMHV Daten_HV;
        list<HV_Liste_Daten> my_list;
        list<HV_Liste_Daten>::iterator it; 
        int anzahl;
        bool test = true;
        test = Daten_HV.OpenRead_File("HV_Test_MM.csv", anzahl, my_list);
        if(test)
            {cout<<endl<<endl<<" Anzahl der Datensätze: "<<anzahl<<endl;}
    
        HV_Liste_Daten ausgabe;
        for (it = my_list.begin(); it != my_list.end(); ++it)
            { ausgabe = *it;
              cout<<ausgabe.datum<<" "<<ausgabe.tester<<" "<<ausgabe.pruefer<<endl;        
            }
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    als beispiel für den Umgang mit dateien habe ich diese seite hergenommen:
    http://ittk.falb.at/pt/unterlagen/vcppk/dateien.html


Anmelden zum Antworten