Veröffentlicht 29. Oktober 200123 j Hi, wie ist denn die genaue Syntax für die (falsche) Zeile? Möchte an den alten Dateinamen "parsed.txt" truncaten/anhängen ofstream outFILE((argv)".parsed.txt") Gruss Volkaman
29. Oktober 200123 j Es könnte so laufen: char szPath[255]; strcpy(szPath,argv); strcat(szPath,".parsed.txt"); ofstream outFILE(szPath);
29. Oktober 200123 j Danke, so klappt es. Nur ein Problem habe ich noch: Ich schreibe auf die Datei nicht in main(), sondern in einer Funktion ausserhalb von main. Die kennt natürlich mein Filehandle nicht. Wenn ich einen deklariere öffntet er mit jedem Aufruf der Schreib-Funktion, den Filehandle neu und überschreibt die Datei??? Gibt's einen Trick? Kann ich den Filehandle vielleicht als Parameter übergeben? <FONT COLOR="#a62a2a" SIZE="1">[ 29. Oktober 2001 13:40: Beitrag 1 mal editiert, zuletzt von volkaman ]</font>
29. Oktober 200123 j Ich würde immer einen Zeiger oder eine Referenz auf das Filehandle in die Unterroutinen übergeben. So in etwa. Bitte mach mich nicht 100%ig für den Code verantwortlich. Ich habe hier leider keine Doku zur Verfügung. void main(void) { char szPath[255]; ofstream outFile; strcpy(szPath,argv[i]); strcat(szPath,".parsed.txt"); OpenFile(&outFILE,szPath); ProcessFile(&outFILE); } void OpenFile(ofstream* filehandle,char* filename) { filehandle->Open(filename); } void ProcessFile(ofstream* filehandle) { //Read, Write?? Was du willst }
29. Oktober 200123 j klingt gut! hab's auch ausprobiert. leider meckert der compi mit "nicht aufgelösten verweisen" hier mal der coder der fkt: void druckzeile(int zeile, char string[], ofstream& file) { if (zeile < 10 && zeile > 0) file << "Zeile " << " " << zeile << string << endl; if (zeile < 100 && zeile > 10) file << "Zeile " << " " << zeile << " >" << string << endl; if (zeile > 100) file << "Zeile "<< zeile << " >" << string << endl; } und des aufrufs: druckzeile(line,p, &outFILE); und hier die deklaration des Filehandle: ofstream outFILE(szPath); hab' doch garantiert wieder was falsch gemacht....
29. Oktober 200123 j der fehler ist in der letzen zeile. es gibt für die klasse ofstream folgende operatoren. (quelle: MSDN) ofstream() ofstream( const char*, int, int ) ofstream( filedesc ) ofstream( filedesc, char*, int ) du müsstest also noch mit angaben, wie die datei geöfnet werden soll. z.B.: ofstream file (szPath, ios: :out); <FONT COLOR="#a62a2a" SIZE="1">[ 29. Oktober 2001 14:27: Beitrag 3 mal editiert, zuletzt von maddin ]</font>
29. Oktober 200123 j Sorry, aber das klappt auch nicht: ofstream outFILE(szPath, ios::out); hab' immer noch "unaufgelöste externe verweise" <FONT COLOR="#a62a2a" SIZE="1">[ 29. Oktober 2001 14:39: Beitrag 1 mal editiert, zuletzt von volkaman ]</font>
29. Oktober 200123 j Steht da auch etwas welcher Verweis nicht aufgelöst werden kann? Das könnte weiter helfen.
29. Oktober 200123 j dann würde ich darauf tippen, das irgendein prototyp nicht korrekt ist. ich würde auch einmal versuchen statt char string[] char* string zu übergeben.
29. Oktober 200123 j JUHUUUUUUUUUUUUU!!!!!!!!!!!!!!!! Jetzt geht's. Das mit dem falschen Prototypen, war der Casus (Be-)Knacktus! Danke Euch!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.