Einfaches C++ Script für Kommentardateien



  • Braunstein schrieb:

    Indem du den Pfad mit angibst.
    z.Bsp. so (bei Windows)

    ofstream KommentarDatei("c:\\temp\\Kommentar.txt");
    

    Das hat nicht funktioniert 😕 jetzt heißt die Datei c:\\temp\\Kommentar.txt,
    ist aber immer noch im selben Ordner.



  • Darthshoot2 😑 schrieb:

    (Nebenbei kann mir mal bitte kurz einer ne möglichkeit posten wie ich in den System Volume Information Ordner rein komme? 😑 Da treiben Viren ihr unwesen und so kann ich kaum im Internet sein naja ihr wisst bestimmt warum..)

    Welche Windows-Version? Unter XP Professional kannst du dir als Admin die Rechte geben, bei Home musst du IIRC in den abgesicherten Modus dafür gehen.

    Hmm wenn die 100 Grenze überschritten wird und man drückt Enter dann schreibt der nicht, dass es fehlgeschlagen ist, erstellt aber auch keine Datei 😮

    Benutz std::string (dafür musst du <string> einbinden).

    1. Es ist doch so, wenn man z.B. ein Programm hat, dass nur eine Datei von einem Ord woanders hin kopieren soll, muss man . als "Alle Dateien" angeben, weil das Programm sonst abschmiert?

    😕

    2. wie stellt man das denn ein, dass er die alte Kommentardatei nicht überschreibt?

    Is wahrscheinlich schon zu kompliziert für dich. Entweder du besorgst dir ne Liste von den Dateien oder du überprüfst für jeden Index manuell, ob du die Datei öffenen kannst.

    Oder willst du alles in eine Datei schreiben? Dann gehört in den Konstruktor von ofstream noch ein Flag:

    ofstream KommentarDatei("Kommentarx.txt", ios::append);
    

    3. Ganz wichtig! Wie stelle ich es ein, dass er den Kommentar aufn Desktop kopiert? Weil der hat ja bei jedem einen anderen Pfad und mit ALL.Users geht net.

    Desktop = %USERPROFILE%\Desktop oder %HOMEPATH%\Desktop



  • Darthshoot2 😑 schrieb:

    Braunstein schrieb:

    Indem du den Pfad mit angibst.
    z.Bsp. so (bei Windows)

    ofstream KommentarDatei("c:\\temp\\Kommentar.txt");
    

    Das hat nicht funktioniert 😕 jetzt heißt die Datei c:\\temp\\Kommentar.txt,
    ist aber immer noch im selben Ordner.

    Das ist unmöglich wenn du Windows hast 😮



  • Welche Fehlermeldung gibt denn dein Compiler?
    evtl. fehlt hier noch ein #include <string> obwohl das meistens zusammen mit iostream reingezogen wird.
    Um zum Schluß nochmal zu warten, schau mal in die FAQ des Konsolenforums. Da gibt es einen schönen Thread dazu.

    [edit]Das geht ja heute wieder schnell. 🙂 [edit]



  • Darthshoot2 😑 schrieb:

    Braunstein schrieb:

    Indem du den Pfad mit angibst.
    z.Bsp. so (bei Windows)

    ofstream KommentarDatei("c:\\temp\\Kommentar.txt");
    

    Das hat nicht funktioniert 😕 jetzt heißt die Datei c:\\temp\\Kommentar.txt,
    ist aber immer noch im selben Ordner.

    Welchen Compiler hast du?

    mfg.



  • Das mit den jedesmal ne neue Datei ist wirklich noch zu schwer für mich ^^
    Aber das andere ist ja noch besser! 😃 Danke!

    %HOMEPATH%DesktopKommentar.txt

    Das ist die Datei die er erstellt ^^ und die \\ hat er ganz weggelassen.

    ÖÖ ich weiß nicht ^^ wo kann man das denn sehen? Ich benutze C++6.0 und der Compiler hat eigendlich bis jetzt immer bestens geklappt auch bei neueren Sachen.



  • Darthshoot2 😑 schrieb:

    ÖÖ ich weiß nicht ^^ wo kann man das denn sehen? Ich benutze C++6.0 und der Compiler hat eigendlich bis jetzt immer bestens geklappt auch bei neueren Sachen.

    Meinst du VC6.0? Ne der ist nicht gut, gar nicht gut. Hat sehr viele Bugs. Versuch's mal mit dem Dev-Cpp, der ist sehr gut für Einsteiger. Weitere Ideen findest du oben rechts wenn du auf Compiler klickst.

    mfg.



  • Jo werd ich machen! 😃 danke.

    C:\Dokumente und Einstellungen\Stefan.R2D2-H7ZO0HWXWM\Desktop\kommentarscript\Kommentar-Script.cpp(12) : error C2653: 'ios' : is not a class or namespace name
    C:\Dokumente und Einstellungen\Stefan.R2D2-H7ZO0HWXWM\Desktop\kommentarscript\Kommentar-Script.cpp(12) : error C2065: 'append' : undeclared identifier
    Error executing cl.exe.

    Das kommt raus wenn ich das mit ios::append mache.



  • joomoo schrieb:

    Hat sehr viele Bugs.

    Hat sehr viele SPs. Trotzdem nicht zu empfehlen.

    Versuch's mal mit dem Dev-Cpp

    Der allerdings auch nicht!

    Ich fahr im Moment mit Code::Blocks mit VC++ 2003 Compiler recht gut.



  • Michael E. schrieb:

    joomoo schrieb:

    Hat sehr viele Bugs.

    Hat sehr viele SPs. Trotzdem nicht zu empfehlen.

    Versuch's mal mit dem Dev-Cpp

    Der allerdings auch nicht!

    Ich fahr im Moment mit Code::Blocks mit VC++ 2003 Compiler recht gut.

    Was sind SPs?
    Also ich finde für Einsteiger ist der Dev-Cpp der Beste. Ich benutze jetzt auch Code::Blocks mit MinGW, aber früher hab ich noch Dev-Cpp benutzt und war damit sehr zufrieden.

    mfg.



  • versuchs mal mit std::ios_base::app



  • Darthshoot2 😑 schrieb:

    Jo werd ich machen! 😃 danke.

    C:\Dokumente und Einstellungen\Stefan.R2D2-H7ZO0HWXWM\Desktop\kommentarscript\Kommentar-Script.cpp(12) : error C2653: 'ios' : is not a class or namespace name
    C:\Dokumente und Einstellungen\Stefan.R2D2-H7ZO0HWXWM\Desktop\kommentarscript\Kommentar-Script.cpp(12) : error C2065: 'append' : undeclared identifier
    Error executing cl.exe.

    Das kommt raus wenn ich das mit ios::append mache.

    ios ist Member von std, also std::ios::append.

    joomoo schrieb:

    Was sind SPs?

    Service Packs.

    Also ich finde für Einsteiger ist der Dev-Cpp der Beste.

    Mir kommt er nicht mehr auf die Platte, bis er generalüberholt ist.



  • std::ios_base::app hat bestens funktioniert danke! 😃

    Jetzt geht es schon langsam an die Feinheiten von meinem Script.
    Wie mache ich es jetzt, dass er nicht am letzten Word weiterschreibt (2 mal test eingegeben = testtest), sondern in der nächsten Zeile weiter schreibt? Was auch cool wäre ist, wenn der das so ordnen würde:

    1. Kommentar
    blabla

    2. Kommentar
    blablabla



  • @Michael E.
    Was zur Zeit aber wohl nicht mehr passiert.
    Ich denke mit CodeBlocks und MinGW liegt der Einsteiger richtig. Aber das ist eigentlich alles OT und dazu gabs schon viele andere Threads.

    @Darthshoot2 😑
    Bitte nochmal.
    neue Frage - neuer Thread



  • Alles klar! 😃



  • Darthshoot2 😑 schrieb:

    std::ios_base::app hat bestens funktioniert danke! 😃

    Jetzt geht es schon langsam an die Feinheiten von meinem Script.
    Wie mache ich es jetzt, dass er nicht am letzten Word weiterschreibt (2 mal test eingegeben = testtest), sondern in der nächsten Zeile weiter schreibt? Was auch cool wäre ist, wenn der das so ordnen würde:

    1. Kommentar
    blabla

    2. Kommentar
    blablabla

    Langsam bekomm ich das Gefühl, dass du dir keine Mühe gibst.



  • Naja ich geb mir schon mühe ich lern bloß seit heute morgen um 8:00 Uhr C++ und muss langsam ma ne Pause einlegen ^^

    Da hier schonmal das mit dem DOS Windows Fenster schließen angesprochen und beantwortet wurde habe ich eine Frage:

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <conio.h>
    #include <windows.h>
    
    int main()
    {
    	std::string Satz;
    
        std::cout << "Dein Kommentar ----> ";
        std::cin  >> Satz;
    
        std::ofstream KommentarDatei("Kommentar.txt", std::ios_base::app);
        if (!KommentarDatei)
        {
            std::cout << "Dein Kommentar konnte nicht erstellt werden.\n";
            exit(1);
        }
    
        KommentarDatei << "Ein neuer Kommentar\n" << Satz << std::endl;
    
        std::cout << "Der Kommentar wurde erstellt!\n";
    
    	void wait()
    {
        FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
        getch();
    }
    
    	return 0;
    }
    

    Das ist das Script, aber dann kommt der Fehler, dass wait illegal wäre:

    C:\Dokumente und Einstellungen\Stefan.R2D2-H7ZO0HWXWM\Desktop\kommentarscript\Kommentar-Script.cpp(26) : error C2601: 'wait' : local function definitions are illegal
    Error executing cl.exe.



  • Hallo

    wenn schon so :

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <conio.h>
    #include <windows.h>
    
    void wait()
    {
        FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
        getch();
    }
    
    int main()
    {
        std::string Satz;
    
        std::cout << "Dein Kommentar ----> ";
        std::cin  >> Satz;
    
        std::ofstream KommentarDatei("Kommentar.txt", std::ios_base::app);
        if (!KommentarDatei)
        {
            std::cout << "Dein Kommentar konnte nicht erstellt werden.\n";
            exit(1);
        }
    
        KommentarDatei << "Ein neuer Kommentar\n" << Satz << std::endl;
    
        std::cout << "Der Kommentar wurde erstellt!\n";
    
        wait();
    
        return 0;
    }
    

    Mach ne Pause, und dann lies dir erstmal ein Tutorial durch.

    bis bald
    akari



  • Danke! 😃

    Ahhh Tutorials o.o ne ne morgen geht's weiter ^^

    Noch eins: Warum kopiert mein Script nur ein einziges Wort in die Kommentar.txt ? 😑

    Man kann z.B. Hallo du da eingeben und es wird nur Hallo gespeichert.



  • Darthshoot. schrieb:

    Noch eins: Warum kopiert mein Script nur ein einziges Wort in die Kommentar.txt ? 😑

    Man kann z.B. Hallo du da eingeben und es wird nur Hallo gespeichert.

    Weil der >> Operator nur bis zu dem ersten Leerzeichen liest. Du kannst stattdessen std::getline verwenden.

    Darthshoot. schrieb:

    Ahhh Tutorials o.o ne ne morgen geht's weiter ^^

    Mal ehrlich, was bringt es dir, wenn du hier alles gesagt bekommst, wie du es machen musst?
    Es ist doch viel sinnvoller, dass du dir das selbst beibringst und selbst denkst und es dann auch verstehst, und nicht einfach nur hier abschreibst...
    Also, wie akari schon sagte, überstürz es doch nicht gleich.
    Bis man C++ halbwegs beherrscht, können mehrere Monate vergehen, das schafft man nicht in ein paar Tagen.


Anmelden zum Antworten