QFile close()

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Qiui
Beiträge: 11
Registriert: 23. Juli 2009 13:29

QFile close()

Beitrag von Qiui »

Abend - ich brauche erneut euer Wissen :oops:

Frage: wenn ich die Defintion zu void QIODevice::close () richtig verstanden habe, dann schließt er mit diesem Befehl den zuvor geöffneten Stream.

Code: Alles auswählen

void start(void)
{
   QFile MyFile("ausgabe.txt");
   if (MyFile.open(QFile::WriteOnly | QFile::Truncate ))
   {
      QTextStream out (&MyFile);

      out << "EF7CF0040012FFFF0012..." ;
   }

   MyFile.close();
}
Rufe ich wenig später (in der nachfolgenden Funktion) "ausgabe.txt" erneut zum schreiben auf, bekomm ich die Meldung, dass die Datei noch geöffnet sein.

Erneuter Öffnen:

Code: Alles auswählen

void setpin_ (int pin, int nr, int zustand)
{
    QString set;
    QString lat;
    QString tris;
    QString pin_pegel;
    QString return_;
    QStringList ausgabe;

     ...

      QFile MyFile("ausgabe.txt");

      if( !MyFile.exists() )
      {
         std::cout << "The file does not exist." << std::endl;
      }

      if (!MyFile.open(QFile::ReadWrite))
      {
         std::cerr<<"Can not open file";
      }

      if (MyFile.open(QFile::WriteOnly | QFile::Append ))
      {
         QTextStream out (&MyFile);

         out << set << tris << pin_pegel << lat << return_;

      }
      MyFile.close();

}
Wie kann ich sicherstellen, dass die Verbindung zu QFile wirklich geschlossen wurde bzw ob eine weitere Applikation ohne mein Wissen auf besagte Textdatei zugreift?

LG
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Du versuchst die Datei doch zweimal zu öffnen in setpin_(..):

Code: Alles auswählen

 
    if (!MyFile.open(QFile::ReadWrite))
    ....

    if (MyFile.open(QFile::WriteOnly | QFile::Append ))
    ....
ohne ein close() dazwischen.
Besser:

Code: Alles auswählen

    if (MyFile.open(QFile::WriteOnly | QFile::Append ))
        // schreiben
    else
        // Fehler melden
Qiui
Beiträge: 11
Registriert: 23. Juli 2009 13:29

Beitrag von Qiui »

:oops: Schande auf mein Haupt - vielen Dank ... hab ich total übersehen - Danke
Antworten