Zugriff auf C:\



  • Hallo, ich hoffe, ich bin diesmal richtig und ihr könnt mir, auch wenn ich wieder falsch sein sollte, vlt. trotzdem helfen. Also ich benutze wie gesagt Visual C++ 2010 und komme mal wieder nicht weiter. Ich möchte, dass mein Programm mit folgendem Befehl eine Textdatei erstellt:

    richTextBox1->SaveFile("C:/Verzeichnis.txt",RichTextBoxStreamType::PlainText);
    

    Zuerst überging ich dieses Problem, da ich besseres zu tun hatte und lies die Datei einfach auf eine andere Partition schreiben, jetzt bin ich allerdings so weit, dass ich das jetzt einfach brauche. Wenn ich die Datei also unter E:\ gespeichert habe, war sie vorhanden und alles hat perfekt gefuntzt aber jetzt möchte ich die Datei nach C schreiben!


    Compiliert zwar ohne Fehler, die Datei ist allerdings nicht vorhanden!


    Hoffe ihr könnt mir helfen und Danke im Voraus, Supermään



  • Der Grund, warum die Datei nach C muss ist, dass wenn das Programm auf anderen Computer installiert werden soll, es evtl. nicht Funzt weil die nur ne C Partition haben.



  • 1. Es gibt kein C++ 2010. Es gibt Visual Studio 2010 und damit kannst du alles machen, auch richtiges C++. Das sagt jetzt noch gar nichts darüber aus, was für Technologien du verwendest - nämlich C++/CLI.

    2. Dass die Anwendung auch auf anderen Rechnern laufen muss, ist überhaupt kein Grund, etwas auf C:\ zu speichern. Stell dir vor, andere Programme haben das Problem auch, dass sie auf unterschiedlichen Rechnern laufen müssen und speichern NICHT auf C:\

    3. Du wirst wahrscheinlich einfach keine Rechte haben.

    4. Dass das Programm kompiliert, find ich besonders erwähnenswert 😉 Die Aussage kannst dir normal sparen.



  • @Supermään:
    Unter Windows ist der Pfad Trenner der Backslash, probiers mal so:

    richTextBox1->SaveFile("C:\\Verzeichnis.txt",RichTextBoxStreamType::PlainText);
    

    (2 Backslashes sind nötig, weil der erste die Escape Sequenz einleitet.)

    Ausserdem könntest Du, falls es eine gibt, die Fehlermeldung auch noch posten. Wird eine Exception geworfen? Hast Du die entsprechenden Code Zeilen mal mit dem Debugger durchgesteppt?

    @Mechanics:
    Er kann sich Aussage 4. keineswegs sparen - es gibt hier immer wieder Fragestellungen in der Art: Die Datei XY wird nicht geschrieben, wo liegt der Fehler? Und dann stellt sich heraus, dass der Code nicht mal Kompiliert hat.



  • Was meinst du mit:

    theta schrieb:

    Hast Du die entsprechenden Code Zeilen mal mit dem Debugger durchgesteppt?

    Sorry aber ich bin erst 12 und programmiere zwar schon länger, bin aber noch nich so der Prof in der Fehlerbekämpfung!

    Danke!



  • Ich meine damit, dass Du im Visual Studio (VS) im Source Code einen Break Point machst, dann mit F5 das Program startest und danach, wenn der Debugger im Break Point landet mit F10/F11 den Code Schritt für Schritt durchgehst und Variablen prüfst, etc.



  • Danke für die schnelle Antwort!
    Mach ich, hab ich haber auch alles schon 10 mal manuell gemacht. ->also alles genau durchgelesen, meine definitionen von Vraiablen überprüft und so...
    Aber ich machs trotzdem nochmal!

    Danke!



  • Hi Ich glaube ich habe den Dreh raus! Ich hab jetzt ne andere Lösung!
    Also erstmal vielen Dank an theta! Ich hatte mir zwar in den Einstellungen für C:\ Theoretisch alle Rechte freigeschaltet unter Eigenschaften->Sicherheit->Gruppen und Benutzernamen: Jeder->Bearbeiten->Schreiben = true; auf Deutsch Bei Schreiben ein Häkchen gesetzt! Also falls es wirklich nur die Rechte waren, kann man zwar nicht auf das Hauptverzeichnis C:\ zugreifen, aber auf das Benutzerverzeichnis. Das siet man auch dass wenn man in C:\ Kontextmenü->Neu->... geht nur Ordner findet, wenn man weiter in den Benutzerordner geht, kann man wieder Problemlos Dateien anlegen!

    Also einfach ins Benutzerverzeichnis!

    Und zum Abschluss @Mechanis:
    Ich habe am Anfang Visual C++ geschrieben, da es von Visual Studio C++, C#, Basic... gibt und nur eine Entwicklungsumgebung die sowohl Visual als auch C++ enthält und laut deinem Zitat:

    Es gibt Visual Studio 2010 und damit kannst du alles machen

    Ist die Angabe Visual Studio ungenau!
    Und wie du hier siehst sagen selbst "Profis": Visual C++ 2010/2008
    http://www.weltbild.at/media/ab/2/018/624/018.624.717.jpg



  • Gemäss der Doku (http://msdn.microsoft.com/en-us/library/8bf5hy2e.aspx) sollte eine IOException geworfen werden, falls der SaveFile(..) Aufruf fehlschlägt.

    Wird so eine Exception geworfen?
    Falls nicht, könnte es sein, dass es geklappt hat (=die Datei wurde geschrieben) aber nicht dorthin wo du es erwartet hast? Ev. kannst Du der Datei mal einen eindeutigen Namen geben und anschliessen die ganze Festplatte durchsuchen.



  • Ja mach ich! Hatte ich auchschon vermutet! Also wenn man eine Pfadangabe weglässt also nur schreibt:

    richTextBox1->SaveFile("Verzeichnis.txt",RichTextBoxStreamType::PlainText);
    

    dann schreibt er es ohne Fehlermeldung in das Programmverzeichnis, die Frage ob nur im Debugger, Releaser 😃 Wenn man ihn so nennen mag, oder auch wenn man es wo anders installiert... Na ja hat den Vorteil:
    Wenn Leute nur eine C Partition haben, installieren sie es dort un müllen sich dort mit dem File die Festplatte zu oder sie installieren es nach z.B. D:\ und haben es dort! Zumindest findet er es dann auch mit dem Befehl:

    richTextBox1->LoadFile("Verzeichnis.txt",RichTextBoxStreamType::PlainText);
    

    immer gleich wieder. Aber trotzdem vielen Dank und villeicht hören wir noch von einander wenn du auchmal ein Problem hast 😉



  • Super**** schrieb:

    Und zum Abschluss @Mechanis:
    Ich habe am Anfang Visual C++ geschrieben, da es von Visual Studio C++, C#, Basic... gibt und nur eine Entwicklungsumgebung die sowohl Visual als auch C++ enthält und laut deinem Zitat:

    Es gibt Visual Studio 2010 und damit kannst du alles machen

    Ist die Angabe Visual Studio ungenau!
    Und wie du hier siehst sagen selbst "Profis": Visual C++ 2010/2008
    http://www.weltbild.at/media/ab/2/018/624/018.624.717.jpg

    Du hast am Anfang kein Visual C++ geschrieben, sondern C++.
    Visual C++ ist keine Sprache, genauso wenig ist Visual C++ 2010 eine Sprache.
    Der Buchtitel von den "Profis" bezieht sich auf die IDE, also auf Visual C++ 2008 Express Edition. Mit dieser Version kann man "nur" C++ oder C++/CLI Projekte entwickeln, kein C# oder VB .Net, dazu müsste man die Version Visual C# 2008 Express besitzen oder Visual Basic 2008 Express.
    Die IDE Visual Studio beinhaltet jedoch ISO C++ (C++/CLI, MFC), C#, J#, und VB.

    Dieses Visual steht nur dafür, dass es aus dem Hause Microsoft kommt.
    Zum Beispiel Visual C++ 6.0

    http://imageshack.us/photo/my-images/14/fmvcmbcab370.gif/

    Gruß



  • Die Windows API akzeptiert auch Slashes in Pfaden, nicht nur Backslashes, das sollte also gehen.

    Das Cover schaut voll professionell aus 😉 Es spricht ja auch nichts dagegen, von Visual C++ zu spechen. Nur ist damit noch nicht gesagt, was du genau machst. Was du machst ist nämlich C++/CLI, das ist wichtiger, als die Angabe, dass du es mit Visual C++ machst.



  • Ich habe mal wieder ein Problem:
    Ich möchte mit SaveFileDialog eine Datei speichern!
    Allerdings möchte ich dannach nicht nur auf:

    mySaveFileDialog->Filename
    

    zugreifen können, sondern auch auf den Pfad, da die Datei dann nämlich automatisch gespeichert werden soll! Ich hatte mir das So vorgestellt:

    private: System::Void...
        {
            if(save == false)
            {
            //SaveFileDialog anzeigen
            }
            else / if(save == true)
            {
            richTextBox1->SaveFile(mySaveFileDialog->FilePath + "\\" + mySaveFileDialog->FileName,RichTextBoxStreamType::RichText);
            }
        }
    

    Allerdings ist FilePath oda so kein Element von SaveFileDiaolg, so weit ich weiß!
    Kann mir jemand weiter helfen?
    Danke im Voraus Super****



  • System::IO::Path::GetDirectoryName
    

    Und Pfade baut man so zusammen:

    System::IO::Path::Combine(path1, path2)
    


  • Danke erstmal!
    Könntest du das dann mal als Codebeispiel schreiben, wie ich den Pfad des SAVE FILE DIALOG auslese! Also der Ausgewählten Datei!
    Gruß Supermään



  • Hallo Supermään,

    (Open/Save)FileDialog.FileName enthält immer den kompletten Pfad:

    MSDN schrieb:

    Hinweise

    Der Dateiname enthält sowohl den Dateipfad als auch die Erweiterung. Wenn keine Dateien ausgewählt sind, gibt diese Methode eine leere Zeichenfolge ("") zurück.



  • Danke! Funktioniert Prima!
    LG Supermään!


Anmelden zum Antworten