Seite 1 von 1

HILFE! QProcess "verschluckt" input!

Verfasst: 23. Februar 2008 15:48
von jizz
Hallo!

Ich habe ein Problem, dass mich bald zum verzweifeln bringt.
Mein Programm gibt output in einem CSV ähnlichen Format. Die erste Spalte ist hierbei die Zeilennummer, welche fortlaufend sind. Es können mitunter mehrere hundert Zeilen sein.

So ungefähr sieht das ganze dann aus:
1;asdjflah jölasdhkflöka;hengkehgl;gahelgaslghle
2; ajlödhlöaghl löaghalö;aöghelögh;agöjklkweghlöa
3;asdjflah jölasdhkflöka;hengkehgl;gahelgaslghle
4; ajlödhlöaghl löaghalö;aöghelögh;agöjklkweghlöa
5;asdjflah jölasdhkflöka;hengkehgl;gahelgaslghle
6; ajlödhlöaghl löaghalö;aöghelögh;agöjklkweghlöa

Ich lese aus, wenn ein readyRead()-Signal emittiert wird, zum Auslesen selbst verwende ich readAll().
Mein Problem ist, dass QProcess einfach mal ein paar hundert Zeilen verschluckt! Ich gebe den Output direkt nachdem ich ihn in in eine QString Variable eingelesen habe per qDebug aus, und die genannten Daten fehlen einfach. Manchmal ist es so, dass er das Ende des Outputs abschneidet, also die letzten Zeilen fehlen; manchmal lässt er aber auch in der Mitte irgendwo ein paar hundert Zeilen rausfallen.
In dem Fall, dass er am Ende was abschneidet habe ich gedacht, dass readAll() vllt. nicht alles ausließt; aber bytesAvailable() ist auch false, wenn man es im Anschluss ans auslesen ausfruft.

Woran kann das liegen?

Danke für eure Hilfe!

Verfasst: 23. Februar 2008 18:24
von upsala
Ein reproduzierbares Codebeispiel wäre nicht schlecht.

Verfasst: 23. Februar 2008 18:30
von jizz
Ich hab das ganze schon auf ein minimum reduziert, genau das was ich oben geschrieben hatte.
InputProcess : public QProcess

Code: Alles auswählen

void InputProcess::dataparser() [slot]
{
	buffer.append ( readAll() );
        qDebug(buffer.toLatin1());
}
im c-tor
connect ( this, SIGNAL ( readyRead() ), SLOT ( dataparser() ) );
naja, es kommt eben nicht alles an bei readAll() !! Das muss eigentlich irgendwie am QProcess liegen, oder?

ps: stderr hab ich auch schon ausgegeben, hat keinen inhalt!

Verfasst: 26. Februar 2008 19:04
von jizz
Weiß denn niemand weiter?
Ich suche jetzt schon ewig und habe nirgends etwas gefunden! Ist es vllt. ein QT-Bug? Gibts hierzu irgendwo Infos?

Verfasst: 26. Februar 2008 19:08
von upsala
Hier kann im Bedarfsfall alle gemeldeten Bugs von Qt nachsehen...

Verfasst: 26. Februar 2008 19:42
von jizz
Mhmm... etwas passendes habe ich nicht gefunden.

Ich werde das ganze jetzt nochmal für Windows kompilieren und dort probieren.
Meint ihr ich soll melden? Auch wenn das Problem unter Windows auch auftritt (ich denke dass es dann wohl doch eher ein Fehler auf meiner Seite sein könnte)?
Ich habe das alles jetzt so lange überprüft, an meiner Implementierung sollte eigentlich nichts fehlen....

Verfasst: 26. Februar 2008 20:11
von upsala
Ich hab jetzt 20.000 Zeilen über QProcess ausgegeben (seq 1 20000) und konnte keine Fehler feststellen...

Verfasst: 18. März 2008 09:05
von moviemax
Das thma hier ist schon älter aber scheinbar noch ungelöst.
Ich denke dein Problem liegt am Zeichensatz bzw. irgendwelchen steuerzeichen. Ich würde an deiner stelle mal was anderes wie latin1
nehmen.

gruß moviemax