Seite 1 von 2
QProcess status
Verfasst: 29. Mai 2008 13:52
von Theranium
Hallo Leute,
ich habe mal folgende Frage: wie kann ich herausfinden, ob ein Prozess erfolgreich beendet worden ist?
Wenn ich beispielsweise einen ping-Prozess starte, möchte ich den abschließend nach dem Ampel-Prinzip auswerten.
Code: Alles auswählen
editor1->setText(entries);
// start ping
asynchron->start("ping", QStringList() << "-c 1" << i.value());
if(asynchron.state() != QProcess::Running)
{
entries.append(" \t - OK - \n\n");
i++;
}
Ich sehe ausser dem Eintrag kein OK, so als ob auf das Ende des Prozesses gewartet würde.
Verfasst: 29. Mai 2008 13:56
von PeterLustig
Mit state kannst du überprüfen ob der Prozess noch läuft. Wenn er vorbei ist kannst du mit exitCode den Exit Code abrufen.
Verfasst: 29. Mai 2008 14:21
von Theranium
Hi PeterLustig,
kannst du mir das mal genauer erklären?
Ich bekomme beim Kompilieren iregendwie immer die Fehlermedlung,
dass asynchron ein Element des Nicht-Klassentyps sei QProcess, und darum state gar nicht abgefragt werden könne. Aber asynchron ist natürllich eine Instanz von QProcess.
Kannst du was damit anfangen?
Verfasst: 29. Mai 2008 14:25
von PeterLustig
Weil du kein C++ kannst.
Verfasst: 29. Mai 2008 14:26
von Theranium
QProcess ist doch eine Klasse, oder nicht!
Verfasst: 29. Mai 2008 14:27
von PeterLustig
Lerne einfach erst einmal C++, bevor du ein Framework wie Qt benutzt.
Verfasst: 29. Mai 2008 14:28
von Theranium
Das hilft mir jetzt auch nicht wirklich.
Aber du hast recht. Da du ja C++ kannst, kannst du mir vielleicht einen Tip geben?
Verfasst: 29. Mai 2008 14:28
von PeterLustig
Ja: Lerne C++ zuerst.
Verfasst: 29. Mai 2008 14:34
von Theranium
Naja, diesen Tip kannte ich schon, und du kannst mir glauben: ich lerne noch. Aber du hast offenbar auch keine Idee, was das Problem in diesem Programm ist.
Verfasst: 29. Mai 2008 14:36
von PeterLustig
Ich weiß woran der Fehler liegt.
Du lernst einfach falsch. Lerne nicht mit einem Framework wie Qt, lerne zuerst die Sprache selbst, sonst wirst du wie jetzt immer wieder auf die Schnauze fallen.
Verfasst: 29. Mai 2008 14:37
von Christian81
Was spricht dagegen einfach das Signa
finished() auszuwerten?
Verfasst: 29. Mai 2008 16:08
von PeterLustig
Christian81 hat geschrieben:Was spricht dagegen einfach das Signa
finished() auszuwerten?
Was spricht dagegen ihm einfach zu sagen er soll C++ lernen? Er kann offensichtlich kein C++, sonst wüsste er wie man auf Zeiger zugreift.
Re: QProcess status
Verfasst: 30. Mai 2008 14:23
von JensL
Hallo Theranium,
schau Dir mal folgende beide Zeilen an, fällt dir da was auf?
Code: Alles auswählen
asynchron->start("ping", QStringList() << "-c 1" << i.value());
Das ist zumindest das, worauf meine Vorposter versucht haben Dich hinzuweisen. (naja mehr oder weniger zumindest)
Vieleicht wars ja nur ein Tippfehler? Für den Fall das Du die Problematik hier nicht erkennst schau Dir am besten nochmal das Thema Zeiger an.
Gruß Jens
Verfasst: 1. Juni 2008 17:54
von Theranium
Was mir jetzt auffällt ist, dass ich einmal "->" und einmal "." benutze, um eine Funktion auszuführen. Da habe ich so gar nicht darauf geachtet. Korrigier mich, wenn ich falsch liege, aber ich sollte wohl den "Punkt" durch einen "Pfeil" (keine Ahnung, wie dieser Operator heißt) ersetzen, da es sich bei asynchron um ein dynamisches Speicherobjekt handelt. Dafür kommt der Punkt-Operator nicht in Frage.
Verfasst: 1. Juni 2008 17:57
von PeterLustig
asynchron ist ein Pointer, ein Zeiger. Er zeigt auf einen Bereich im Speicher. Mit dem Pfeil Operator -> greift man auf das Objekt zu, worauf der Zeiger zeigt.
C++ Grundwissen.