Probleme mit FStream



  • Hallo,

    ich habe ein Programm in VC geschrieben, und wollte nun eine Klasse davon in
    Borland compilieren. Wundere mich nur, das es da zum Fehler kommt.

    #include <fstream.h>
    ....
    fstream f;
    f.open("test.txt", ios::out);
    
    if (!f)
    {
     leider geht er hier rein
    }
    ...
    ...
    f.close();
    

    Ich hoffe ihr könnt mir helfen.
    Gruß
    -Patrick



  • Sollte so funktionieren. Hast Du Schreibrechte in dem Verzeichnis, in dem Du versuchst die Datei zu erzeugen?



  • Hallo, danke erstmal für deine Antwort.

    Habe auch folgendes versucht:

    f.open("C:\\test.txt", ios:out);
    

    aber das hat auch nicht hingehauen. Er will einfach die Datei
    nich zum schreiben öffnen.



  • Bin trotzdem der Meinung, dass es nur an mangelnden Schreibrechten liegen kann. Der gezeigt Code ist auf jeden Fall in Ordnung.



  • danke, aber ich bin mir sicher das ich die Schreibrechte hab.



  • Willst / mußt Du die STL-Komponenten verwenden?
    Wenn nicht, versuch es mal mit TFileStream, wenn doch, verschiebt Dich bestimmt ein freundlicher Moderator in das C++-Forum.



  • STL wäre schon besser, aber ich kann es ja erst mal mit TFileStream versuchen. Kannst du mir sagen, welche Header ich dafür einbinden muss ??



  • Der Header für TFileStream wird automatisch eingebunden. Der entsprechende Header wäre Classes. Bei allen Komponenten wird in der Hilfe angegeben, in welcher Headerdatei sich diese befindet (einfach mal TFileStream in der Hilfe eingeben und schauen).



  • also, ich habe eine eigene Klasse geschrieben, die nur STL Komponeneten benutzt. Wenn ich diese Klasse in Visual Studio einbinde, dann funktioniert alles einwandfrei. Jetzt soll sie aber in einem Borland C++ Projekt benutzt werden, und da funktioniert das Ganze mit dem fstream nicht mehr. Also wollte ich jetzt mal dein TFileStream benutzen, aber das haut auch nicht hin. Wenn ich jetzt nämlich die Headerdateie <Classes.h> (oder aus Verzweiflung auch <Classes>) in die Headerdatei meiner Klasse einbinde, dann sagt der Borland: include Datei 'Classes.h' kann nicht geöffnet werden. Hier ist irgendwie ganz gewaltig der Wurm drin.

    Vielleicht sollte ich noch erwähnen, dass ich "nur" eine TestVersion vom C++ Builder 6 verwende, aber auch damit sollte es doch möglich sein mit Dateien zu arbeiten, oder?



  • Hallo,

    Es heißt Classes.hpp.
    Die Variante mit fstream sollte aber gehen. Allerdings würde ich an deiner Stelle statt fstream.h lieber <fstream> verwenden. Die alten STL-Header sollten nicht mehr genommen werden.
    Dann statt fstream lieber ofstream wenn du es nur zum schreiben brauchst.

    #include <fstream>
    ....
    std::ofstream f("test.txt");
    
    if (!f.is_open())
    {
    // leider geht er hier rein. Mal sehen
    }
    ...
    ...
    f.close(); // kann man weglassen. Der Destruktor erledigt das automatisch
    


  • Habe gerade ein neues Projekt erstellt und dann FStream ausprobiert.
    Es lief.

    Ich führe in meinem Programm FStream in einer selber geschriebenen Klasse aus, die ich eingebunden habe. Könnte es sein das die Schreibrechte dieser Klasse irgendwie eingeschränkt wurden?? Und wie kann ich dies überprüfen??


Anmelden zum Antworten