QFile close() schließt Datei nicht korrekt
QFile close() schließt Datei nicht korrekt
Ich habe gerade festgestellt, dass die close() Methode von QFile die betreffende Datei nicht korrekt schließt. Nach dem close() kann ich von einem anderen Programm nicht mehr auf die Datei zugreifen. Mache ich das Ganze mit fopen() etc. zu Fuß läuft alles prima. Hat das schon mal jemand gehabt bzw. eine Idee was da falsch läuft?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
So sieht der Code aus:
QString fn = QFileDialog::getOpenFileName(this, QString::null,String::null);
QFile file(fn);
if (file.open(QFile::ReadOnly | QFile::Text))
{
ui.nullpunktEdit->setPlainText(file.readAll());
file.close();
}
ui.nullpunktEdit ist ein QTextEdit.
Das Qt Programm läuft danach weiter. Eine zweite Anwendung versucht dann die Datei für sich zu öffnen und scheitert.
Wie gesagt, zu Fuß ist alles OK
QString fn = QFileDialog::getOpenFileName(this, QString::null,String::null);
QFile file(fn);
if (file.open(QFile::ReadOnly | QFile::Text))
{
ui.nullpunktEdit->setPlainText(file.readAll());
file.close();
}
ui.nullpunktEdit ist ein QTextEdit.
Das Qt Programm läuft danach weiter. Eine zweite Anwendung versucht dann die Datei für sich zu öffnen und scheitert.
Wie gesagt, zu Fuß ist alles OK
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Mein Anwendung läuft noch unter Qt 4.1.0 (VS2005)
Habe mal in den Sourcen nachgeschaut was dort beim Öffnen einer Datei gemacht wird.
In der Version Qt 4.1.0 wird die (eigentlich) neue Funktion ws_open_s() verwendet. In der Version 4.3.0 wird die "alte" Win32 Funktion CreateFileW() verwendet. In ws_open_s() werden implizit sinnvolle (aus MS Sicht) Security Attribute gesetzt und in CreateFileW() werden die beliebten Null Security Attribute übergeben.
Anscheinend hat die Anwendung, die bei mir meckert Probleme damit. Vielleicht gab's dass schon öfter und Trolltech hat es deshalb wieder geändert
Habe mal in den Sourcen nachgeschaut was dort beim Öffnen einer Datei gemacht wird.
In der Version Qt 4.1.0 wird die (eigentlich) neue Funktion ws_open_s() verwendet. In der Version 4.3.0 wird die "alte" Win32 Funktion CreateFileW() verwendet. In ws_open_s() werden implizit sinnvolle (aus MS Sicht) Security Attribute gesetzt und in CreateFileW() werden die beliebten Null Security Attribute übergeben.
Anscheinend hat die Anwendung, die bei mir meckert Probleme damit. Vielleicht gab's dass schon öfter und Trolltech hat es deshalb wieder geändert
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: