Daten schreiben fertig?

Alles rund um die Programmierung mit Qt
Antworten
madRenEGadE
Beiträge: 52
Registriert: 10. Februar 2006 15:15

Daten schreiben fertig?

Beitrag von madRenEGadE »

Habe folgendes Problem:
Bei meinem Programm gibt es eine Loginfunktion...
Wenn man auf den Button klickt wird eine Datei erstellt und auf ihren Inhalt überprüft. Kann es sein das die Funktionen zum Scrheiben einer Datei asynchron sind? Es kommt nämlich immer vor das ich mehrmals auf den Button klicken muss, da anscheinend die Datei bereits ausgelesen wird, wenn sie noch nicht fertig erstellt wurde?! Gibts es für dieses Problem etwas ähnliches wie die requestFinish sache bei QHttp? oder liegt mein Problem eventuell sogar ganz wo anders?
Emperor_L0ser
Beiträge: 51
Registriert: 28. Juli 2005 12:26
Kontaktdaten:

Beitrag von Emperor_L0ser »

es gibt dort mehre fehlerquellen, oder möglichkeiten das es klappt

zum ersten: ja dateien werden erst auf die platte geschrieben, wenn das system grad nichts zu tun hat, dies wird aber vom betriebssystem verwaltet und nicht von qt. das beeinträchtigt das arbeiten mit dateien jedoch nicht.

ein sehr beliebter fehler ist das vergessen von close() der Datei.

2. möglichkeit dem bs unter die arme zu greifen: nach dem schreiben flush() benutzen, damit werden alle daten aus dem schreib/lesepuffer gespeichert.

mfg Emperor_L0ser
madRenEGadE
Beiträge: 52
Registriert: 10. Februar 2006 15:15

Beitrag von madRenEGadE »

also am close() liegt es nicht!!!
das Porblem ist das ich etwas in eine datei schreibe, diese auslese und dann auf einen bestimmten inhalt prüfe und die Überprüfung anscheinend schon VOR dem beenden des auslesens statt findet!!!
weiß absolut nicht wie ich das problem lösen soll
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Warum schreibst Du was nur um es dann (im gleichen Programm) wieder auszulesen??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
madRenEGadE
Beiträge: 52
Registriert: 10. Februar 2006 15:15

Beitrag von madRenEGadE »

das liegt daran das ich die datei von einem server per http downloade (also speichere) und dann sofort zum lesen öffne

PS: flush() hat nicht geholfen
und ich hab das problem auch nur wenn ich QT benutze in anderen andwendungen is sowas NIE passiert

Gibt es vielleicht die Möglickeit alles außer dem schreiben der datei in einen wartezustand zu verstetzen?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Und warum muss die Datei dann erst gespeichert werden?
Eventuell ist dein QHttp-request einfach noch nicht fertig - siehe signal requestFinish()
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
madRenEGadE
Beiträge: 52
Registriert: 10. Februar 2006 15:15

Beitrag von madRenEGadE »

requestFinish is schon erledigt wenn ich die datei angucke dann steht da auch alles drin aber das programm läuft eben bereits weiter wenn und überprüft die ausgelesenen daten bevor das lesen oder schreiben fertig ist
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dann musst du eben warten bis requestFinish feritg ist... wo liegt das Problem?

/edit
Und ich habe immer noch nicht kapiert warum die Datei gespeichert werden muss...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
madRenEGadE
Beiträge: 52
Registriert: 10. Februar 2006 15:15

Beitrag von madRenEGadE »

gibt es noch eine möglichkeit daten einer html datei zu lesen als diese zu speichernich warte doch bis requestFinish aba daran liegt es ja nicht...

hier mal der code damit es bissl deutlicher wird

Code: Alles auswählen

QFile f("query/login.trm");
        f.open(QIODevice::ReadOnly);
        QTextStream textStream (&f);
        userid = textStream.readLine(); 
        buffer = textStream.readLine(); 
        end    = textStream.readLine();
        f.close(); 
        
        readResult(); // überprüft die eingelesenen daten
readresult() wird ausgeführt BEVOR die daten eingelesen wurden!!!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

madRenEGadE hat geschrieben: readresult() wird ausgeführt BEVOR die daten eingelesen wurden!!!
Ich kapiere es einfach nicht...
Warum kannst Du mit der ganzen Leserei nicht einfach auf requestFinsh() warten?
Und warum benuttz Du als QIODevice nicht einfach QBuffer anstatt QFile?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
madRenEGadE
Beiträge: 52
Registriert: 10. Februar 2006 15:15

Beitrag von madRenEGadE »

das Problem ist ja nich requestFinish!!!

was für einen Vorteil hat QBuffer?
Antworten