ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
677
677
EMPFEHLEN
-
25.05.07 20:26 #1
- Registriert seit
- Apr 2007
- Beiträge
- 3
Hallo zusammen,
habe ein riesen Problem was sich einfach nicht lösen lässt und woran ich schon seit zwei Tagen sitze. Hoffe einer von euch kann mir weiterhelfen, bin echt am verzweifeln. Vielen Dank schon mal im Vorraus. Ika
Ich habe folgenden Quellcode:
// Datei einlesen
void GegliederterText::set_in_gegliedertertext(char * new_name_filelist, string new_bez_abschnitt){
string ueberschrift;
string buffer;
filelist = string(new_name_filelist); //string erzeugen
bez_abschnitt = new_bez_abschnitt;
text.clear(); // Loescht alle Elemente
// Datei Liste oeffnen
fin.open(filelist.c_str()); // formatiert den Dateinamen in ein Zeichenkette-Format
if(!fin){
cout << "Konnte Datei nicht oeffnen!" << filelist << endl;
}
else {
while(getline(fin, buffer)){ // Inhalt einlesen
text.push_back(buffer);
cout << "Bufferausgabe " <<buffer << endl;
}
for(int i=0; i<text.size(); i++){
cout << "size" << text.size();
if(!text[i].empty() || text[i] != "\n"){
cout << "i = " << i << ", text[i] = " << text[i] << endl;
Gtext.resize(i+1);
ifstream datei_abschnitt(text[i].c_str());
if(!datei_abschnitt){
cout << "Konnte Datei" << text[i].c_str() << " +++nicht oeffnen!" << endl;
}
while(getline(datei_abschnitt, buffer)){ // Inhalt einlesen
Gtext[i].append_string(buffer);
cout << "buffer = " << buffer << endl;
}
cout << "Test: Gtext[i].print()" << endl;
Gtext[i].print();
cout << "Test Ende " << endl;
}
/*pfad = text.at(i);
ueberschrift = bez_abschnitt;
TextObjekt gtext(Gtext.at(i));
gtext.at(i).append_string(ueberschrift); */
cout << "my test" <<endl;
//Gtext.at(i).set_in_datei(pfad.c_str());
}
}
fin.close();
}
Das Prob ist, dass ich beim kompilieren folgende Fehlermeldung erhalte und nicht wirklich was damit anfangen kann.(bin blutiger Anfänger): Die Headerdatei <vector> wurde eingebunden, falls es darauf geschoben wird
. Es funktioniert weder unter Linux noch unter Windows. Gtext ist übrigens das: vector<TextObjekt> Gtext;
C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algobase.h instantiated from `void std::fill(_ForwardIterator, _ForwardIterator, const _Tp&) [with _ForwardIterator = __gnu_cxx::__normal_iterator<TextObjekt*, std::vector<TextObjekt, std::allocator<TextObjekt> > >, _Tp = TextObjekt]'Geändert von paramit100 (25.05.07 um 20:38 Uhr)
-
27.05.07 11:08 #2
- Registriert seit
- Apr 2005
- Beiträge
- 191
Hallöchen,
ich glaub, die eigentliche Fehlermeldung hast du vergessen, hinzuzufügen.
Ich rate mal ins Blaue hinein:
Die Funktion std::fill() möchte einen Container (in deinem Falle "vector") mit einer Reihe von Werten füllen. Vielleicht hat deine Klasse "TextObject" keinen vernünftigen Default-Constructor.
Falls ich falsch liege, gib mal ein paar weitere Infos.
Noch ein Tipp: Code-Ausschnitte formatiere bitte als Code:.Code :1
programmtext
Dann wirds übersichtlich.
Grüße OS
-
27.05.07 12:35 #3
- Registriert seit
- Apr 2007
- Beiträge
- 3
Hui doch eine Antwort
Danke.
es gibt einen Defaultkonstruktor, einen Konstruktor mit Parametern und noch einen Kopierkonstruktor.
Ich habe alle Dateien hochgeladen falls jemand Interesse hat
http://eyedea.net/fh/a8_c.cpp
http://eyedea.net/fh/gegliedertertext.h
http://eyedea.net/fh/textobject.h
http://eyedea.net/fh/liste.txt
Ich habe einen Breakepoint (system("Pause")) gesetzt und und die Fehlermeldungen kommen schon vor resize(). Wenn ich die beiden Zeilen unterm Breakpoint entferne, läuft das Prog ohne Fehler.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
void GegliederterText::set_in_gegliedertertext(char * new_name_filelist, string new_bez_abschnitt){ string ueberschrift; string datei_abschnitt_buffer; filelist = string(new_name_filelist); //string erzeugen bez_abschnitt = new_bez_abschnitt; ifstream datei_abschnitt; //text.clear(); // Datei Liste oeffnen set_in_datei(new_name_filelist); for(int i=0; i < text.size(); i++){ cout << "size i: " << i << endl; datei_abschnitt.open(text[i].c_str()); cout << "*set_in_gegliedertertext* Txt Dateien: " << text[i] << endl; if(!datei_abschnitt){ cout << "*set_in_gegliedertertext* Konnte Datei " << text[i] << " nicht oeffnen!" << endl; } else { cout << "*set_in_gegliedertertext* Konte Datei " << text[i] << " oeffnen!" << endl; while(getline(datei_abschnitt, datei_abschnitt_buffer)){ // Inhalt einlesen cout << "*set_in_gegliedertertext* BufferZeile: " << datei_abschnitt_buffer << endl; system("Pause"); [B]Gtext.resize(i+1);[/B] [B]Gtext.at(i).set_in_datei(datei_abschnitt_buffer.c_str());[/B] } datei_abschnitt.close(); } } }
Folgende weitere Fehlermeldungen erhalte ich von Dev c++:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
C:\Dev-Cpp\include\c++\3.4.2\bits\ios_base.h In member function `std::basic_ios<char, std::char_traits<char> >& std::basic_ios<char, std::char_traits<char> >::operator=(const std::basic_ios<char, std::char_traits<char> >&)': 524 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algobase.h instantiated from `void std::fill(_ForwardIterator, _ForwardIterator, const _Tp&) [with _ForwardIterator = __gnu_cxx::__normal_iterator<TextObjekt*, std::vector<TextObjekt, std::allocator<TextObjekt> > >, _Tp = TextObjekt]' 291 C:\Dev-Cpp\include\c++\3.4.2\bits\vector.tcc instantiated from `void std::vector<_Tp, _Alloc>::_M_fill_insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, size_t, const _Tp&) [with _Tp = TextObjekt, _Alloc = std::allocator<TextObjekt>]' 612 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_vector.h instantiated from `void std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, size_t, const _Tp&) [with _Tp = TextObjekt, _Alloc = std::allocator<TextObjekt>]' 398 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_vector.h instantiated from `void std::vector<_Tp, _Alloc>::resize(size_t, const _Tp&) [with _Tp = TextObjekt, _Alloc = std::allocator<TextObjekt>]' 412 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_vector.h instantiated from `void std::vector<_Tp, _Alloc>::resize(size_t) [with _Tp = TextObjekt, _Alloc = std::allocator<TextObjekt>]' 123 C:\Dev-Cpp\bin\8\c\gegliedertertext.h instantiated from here 741 C:\Dev-Cpp\include\c++\3.4.2\bits\ios_base.h `std::ios_base& std::ios_base::operator=(const std::ios_base&)' is private 524 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algobase.h within this context C:\Dev-Cpp\include\c++\3.4.2\streambuf In member function `std::basic_filebuf<char, std::char_traits<char> >& std::basic_filebuf<char, std::char_traits<char> >::operator=(const std::basic_filebuf<char, std::char_traits<char> >&)': 776 C:\Dev-Cpp\include\c++\3.4.2\streambuf `std::basic_streambuf<_CharT, _Traits>& std::basic_streambuf<_CharT, _Traits>::operator=(const std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char, _Traits = std::char_traits<char>]' is private 524 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algobase.h within this context
Geändert von paramit100 (27.05.07 um 12:40 Uhr)
-
27.05.07 13:40 #4
- Registriert seit
- Apr 2007
- Beiträge
- 3
Problem gelöst!!
Deine Vermutung war richtig. Es lag am Defaultkonstruktor. Ich hatte vergessen den Textbuffer zu leeren.
Vielen Dank für die Hilfe.
Gruß Ika
Ähnliche Themen
-
string array führt auf anderen Computern zum absturz. Warum?
Von klein611 im Forum C/C++Antworten: 6Letzter Beitrag: 08.11.10, 22:52 -
ServiceBase.Run führt unter Win2000 zum Absturz
Von Schnielz im Forum .NET Application und Service DesignAntworten: 0Letzter Beitrag: 28.08.07, 11:06 -
Absturz bei resize des Anwendungsfensters
Von RuFFnEcK im Forum Borland CBuilder und VCLAntworten: 0Letzter Beitrag: 08.09.06, 11:53 -
Bei resize des Fensters auch resize der Controls
Von SixDark im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 25.11.03, 10:27 -
malloc/free .. führt zu Absturz
Von Sebastian L im Forum C/C++Antworten: 3Letzter Beitrag: 19.11.03, 19:09





Zitieren
Login






