Jonsc1 Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 Habe mal wieder ein Problem zu dem ich keine Lösung finde: Ich habe zB folgende Ausgangssituation: string zeile; ifstream datei("datei.txt"); while(!datei.eof() ) { getline(datei, zeile); }; Schön... jetzt bin ich am Ende der Datei... ich will nun aber wieder an den Anfang springen... wie bekomm ich das gebacken, ich such schon seit ner Stunde, und finde nirgendwo ne passende Funktion... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 11. April 2006 Teilen Geschrieben 11. April 2006 Mit seekg kannst du die Position des Lesezeigers in der Datei ändern. So setzt du ihn an den Anfang: datei.seekg( 0, ios_base::beg ); Dann kannst du aber immer noch nicht viel damit machen, weil das Fehlerbit für das Lesen über das Dateiende hinaus gesetzt ist. Die Fehlerbits kannst du aber mit datei.clear(); zurücksetzen. Übrigens ist deine Leseschleife möglicherweise fehlerhaft, je nachdem, was du mit der eingelesenen Zeile machst. eof liefert erst dann true, wenn getline schon einmal fehlgeschlagen ist. Du kannst aber auch getline selbst in der Schleifenbedingung benutzen: while(getline(datei, zeile)) oder while(!getline(datei, zeile).eof()) Beide Beispiele nutzen die Tatsache, dass std::getline eine Referenz auf das Stream-Objekt zurückgibt. Das erste Beispiel nutzt zudem noch aus, dass der Stream selbst als Bedingung genutzt werden kann. Effektiv liefert das true, wenn keines der Fehlerbits gesetzt ist. Das zweite Beispiel testet natürlich nur auf eof. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jonsc1 Geschrieben 11. April 2006 Autor Teilen Geschrieben 11. April 2006 Danke für die ausführliche Antwort... War genau das was ich gebraucht habe... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jonsc1 Geschrieben 11. April 2006 Autor Teilen Geschrieben 11. April 2006 Ich bin einfach mal so frech und hänge noch ne Frage hintendran: Gibt es eine Funktion die eine Textdatei im Windows-Editor öffnet? Ich will mittels einem Menüeintrag die Readme zu meinem Prog anzeigen, finde aber nix dazu... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 11. April 2006 Teilen Geschrieben 11. April 2006 #define FULL_PATH_README //hier Pfad zur readme ShellExecute(handle, "open", "notepad.exe", FULL_PATH_README, getenv("windir"), 0 ); einfach Notepad starten und als Parameter den vollen Pfad zur Readme (Dir + File) angeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jonsc1 Geschrieben 11. April 2006 Autor Teilen Geschrieben 11. April 2006 Kann man diesen absoluten Pfad auch irgendwie relativ zum momentanen Programmverzeichniss angeben? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 11. April 2006 Teilen Geschrieben 11. April 2006 relativ zur Exe müsste gehen... Musst du mal probieren Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jonsc1 Geschrieben 11. April 2006 Autor Teilen Geschrieben 11. April 2006 Wenn ich einfach "readme.txt" übergebe passiert gar nix... Was ist eigentlich mit handle in diesem Fall gemeint? Was für ein handle? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 11. April 2006 Teilen Geschrieben 11. April 2006 Also... in ANSI C gibt es dafür Funktionen, in ISO C++ nicht. Aber kannst die Funktionen ja trotzdem benutzten, ich muss nur bisschen klug*******ern. Unter Linux (nur der Vollständigkeit halber) und Windows ist das aktuelle Verzeichnis das Verzeichnis, in dem die ausführbare Datei liegt. Solange also nicht irgendwo in deinem Programm die Funktion chdir() benutzt wird, kannst du das Verzeichnis der ausführbaren Datei mit dem des aktuellen Verzeichnises gleichsetzen. Aktuelles Verzeichnis auslesen: Einfach die Funktion _getcwd() benutzen. char *_getcwd( char *buffer, int maxlen ); oder wchar_t *_wgetcwd( wchar_t *buffer, int maxlen ); Der Return ist einfach nur ein Zeiger auf den Puffer, den man übergibt. Das koppelst du halt mit deiner readme... zu dem Handle: Handle to the owner window used for displaying a user interface (UI) or error messages. This value can be NULL if the operation is not associated with a window. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jonsc1 Geschrieben 11. April 2006 Autor Teilen Geschrieben 11. April 2006 Selbst wenn ich den absoluten Pfad angebe passiert einfach garnichts... Habe alles genau so gemacht wie beschrieben... ?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 11. April 2006 Teilen Geschrieben 11. April 2006 probier mal als letzten parameter SW_SHOWMAXIMIZED Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 11. April 2006 Teilen Geschrieben 11. April 2006 Der erste Schritt bei der Fehlersuche ist die Prüfung der Rückgabewerte. Also, was gibt ShellExecute zurück? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jonsc1 Geschrieben 14. April 2006 Autor Teilen Geschrieben 14. April 2006 Sorry das ich mich erst so spät zurückmelde... Der Parameter SW_SHOWMAXIMIZED war die Lösung... Eigentlich auch logisch... Danke nochmal an alle.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jonsc1 Geschrieben 18. April 2006 Autor Teilen Geschrieben 18. April 2006 Nochmal ich Das mit dem relativen Pfad funktioniert nicht... Die Datei wird immer in C: gesucht... WARUM? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2006 Teilen Geschrieben 18. April 2006 Vermutlich, weil ShellExecute nicht mit relativen Pfaden zurechtkommt. Wozu ist dein Pfad denn relativ? Zum Pfad deines Programms? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jonsc1 Geschrieben 18. April 2006 Autor Teilen Geschrieben 18. April 2006 Ja... Ich müsste einfach nur ein Textdokument im selben Ordner wie meine .exe Datei aufrufen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2006 Teilen Geschrieben 18. April 2006 Dann hol dir mit GetModuleFileName den Pfad zu deiner Exe, schneid mit PathRemoveFileSpec den Dateinamen ab und häng den Namen der Textdatei an. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jonsc1 Geschrieben 18. April 2006 Autor Teilen Geschrieben 18. April 2006 Danke, das hilft Falls das hier noch jemand liest: Für die 2te Funktion braucht man die Lib shlwapi.lib und den header shlwapi.h . Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.