Einfaches C++ Script für Kommentardateien



  • Bezüglich des System Volume Information Ordner solltest du in einen anderen Forum fragen, hier gehts um C++.
    Wegen 2. und 3. gilt die Regel: "Neue Frage - Neuer Thread"
    1. Was meinst du damit?

    Wenn die 100er Grenze überschritten ist schreibst du sowieso in Speicher der dir nicht gehört. Desweiteren fehlt die Endkennung des Strings (das wäre '\0' an Position 99).
    Du könntest statt char[] ja std::string verwenden. Da hast du dann keine Begrenzung mehr.



  • Das mit String funktioniert nicht. (Warscheinlich weil ich es falsch mache.)
    Obwohl ich heute schon öfters mit String arbeiten musste und es hat nicht geklappt warum auch immer.

    #include <iostream>
    #include <fstream>
    
    int main()
    {
    	std::string Satz;
    
        std::cout << "Dein Kommentar (maximal 100 Buchstaben lang!) ----> ";
        std::cin  >> Satz;
    
        std::ofstream KommentarDatei("Kommentar.txt");
        if (!KommentarDatei)
        {
            std::cout << "Dein Kommentar konnte nicht erstellt werden.\n";
            exit(1);
        }
    
        KommentarDatei << Satz;
    
        std::cout << "Der Kommentar wurde erstellt!\n";
    
        return 0;
    }
    

    Da habe ich den Char durch String ersetzt. Was ist falsch?
    Übrigens mit Falsch meine ich, dass er nicht compilt ^^

    P.S. Zu diesem Programm: Warum geht die Datei zu sobald mit Enter bestätigt wurde? Ich würde gerne, dass man nach der Aussage "Alles hat funktioniert oder eben nicht funktioniert" das man nochmal bestätigen muss.

    EDIT: Schon gut das mit dem String hab ich schon ^^ ich hatte include ganz oben vergessen.



  • IMMER Fehlermeldung mit schicken wenn er nicht compiliert!

    Du brauchst die Headerdatei:

    #include <string>
    

    mfg.

    edit: jo, haste selber gemerkt. Hier zu deinem Problem mit dem schließen: http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html



  • 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.


Anmelden zum Antworten