Anzeige:
Ergebnis 1 bis 9 von 9

Thema: QProcess tut nicht das was ich will ...

  1. #1
    Registrierter Benutzer
    Registriert seit
    29.10.2003
    Ort
    Bayern
    Beiträge
    70

    Unhappy QProcess tut nicht das was ich will ...

    sieht titel und hier der code, währe sonst zu lang
    http://rafb.net/paste/results/QysNAu33.html

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wäre aber vielleicht ganz praktisch, wenn du sagen würdest, was nicht geht.

    Aber ich hab jetzt ein paar andere Bemerkungen

    1) Die Erzeugung einer neuen KConfig Instanz zum Auslesen der Config der Applikation ist nicht nötig, die gibt es schon.

    2) als Zielverzeichnis für die Files würde sich eher das KDE Cache Verzeichnis als Wurzel mit einem Unterverzeichnis deiner Applikation anbieten, siehe KStandardDirs und Typ "cache"

    3) für das Herunterladen würde ich eher KIO::file_copy benutzen, oder für synchronen Download KIO::NetAccess::download
    Das sorgt dafür, dass zB Proxy Einstellungen honoriert werden.

    4) Das extrahieren aus einem tar.gz kann man auch über KArchive (KIO) oder den tar IO-Slave machen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    29.10.2003
    Ort
    Bayern
    Beiträge
    70

    Question

    Zitat Zitat von anda_skoa
    Wäre aber vielleicht ganz praktisch, wenn du sagen würdest, was nicht geht.
    nichts geht, erstartet zwar den process, ich bekomm auch die PID angezeigt, aber es tut sich nichts.


    Zitat Zitat von anda_skoa
    1) Die Erzeugung einer neuen KConfig Instanz zum Auslesen der Config der Applikation ist nicht nötig, die gibt es schon.
    verstehe ich nicht ganz, wo? ausserdem muss ich die konfig datei auslesen da ja der versionsstring drin steht und ich ihn an den QString weiter gebe.


    Zitat Zitat von anda_skoa
    2) als Zielverzeichnis für die Files würde sich eher das KDE Cache Verzeichnis als Wurzel mit einem Unterverzeichnis deiner Applikation anbieten, siehe KStandardDirs und Typ "cache"
    ok daran habe ich nicht geacht, werde ich benutzen, danke


    Zitat Zitat von anda_skoa
    3) für das Herunterladen würde ich eher KIO::file_copy benutzen, oder für synchronen Download KIO::NetAccess::download
    Das sorgt dafür, dass zB Proxy Einstellungen honoriert werden.
    ok, mal schauen was sich da machen lässt, obwohl mir die Qt variante besser gefällt (ist einfacher),
    aber für ein bsp währe ich dankbar


    Zitat Zitat von anda_skoa
    4) Das extrahieren aus einem tar.gz kann man auch über KArchive (KIO) oder den tar IO-Slave machen.
    hmmm.... habe ich mir mal angschaut, werde leider nicht schlau daraus , da ich damit noch nichts gemacht habe, ein bsp währe da auch nicht verkehrt

    Gruß
    ChMaster|LFreak
    Geändert von ChMaster|LFreak (10-02-2005 um 14:42 Uhr)

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von ChMaster|LFreak
    nichts geht, erstartet zwar den process, ich bekomm auch die PID angezeigt, aber es tut sich nichts.
    Kommt vielleicht etwas am stderr?
    Bzw, wenn du einen Slot auf processExited() connectest und dort den exitStatus abfragst, welchen Wert bekommst du dann?

    verstehe ich nicht ganz, wo? ausserdem muss ich die konfig datei auslesen da ja der versionsstring drin steht und ich ihn an den QString weiter gebe.
    KApplication (d.h. dessen Basisklasse KInstance) hat beim Start bereits die Config des Programms geladen.
    KApplication::config oder KInstance::config oder KGlobal::config zeigen alle auf diese Instanz, es ist also nicht nötig, sie nochmal selber einzulesen.

    ok, mal schauen was sich da machen lässt, obwohl mir die Qt variante besser gefällt (ist einfacher),
    aber für ein bsp währe ich dankbar
    Ist im wesentlichen eigentlich gleich.
    Die Funktion KIO::file_copy bekommt Source und Destination URL und erzeugt dir dafür einen FileCopyJob, ähnliche wie QUrlOperator eine QNetworkOperation erzeugt.
    Du kannst dann die Signals des Jobs mit Slots von dir connecten.

    hmmm.... habe ich mir mal angschaut, werde leider nicht schlau daraus , da ich damit noch nichts gemacht habe, ein bsp währe da auch nicht verkehrt
    KTar ist eine Subklasse von KArchive und kann auch gzip und bzip komprimierte tar Archive.
    Man kann dort so ähnlich wie mit QDir arbeiten, also Verzeichnisse auflisten und Dateien erhalten.

    Für den tar IO Slave vermute ich jetzt mal:
    man erzeugt aus dem absoluten Filenamen eine tar:/ URL und benutzt dann zB KIO::file_copy um von der "Quelle" in ein Ziel zu "kopieren"

    Externes tar ist aber vermutlich erstmal leichter zu implementieren.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    29.10.2003
    Ort
    Bayern
    Beiträge
    70

    Question

    KApplication (d.h. dessen Basisklasse KInstance) hat beim Start bereits die Config des Programms geladen.
    KApplication::config oder KInstance::config oder KGlobal::config zeigen alle auf diese Instanz, es ist also nicht nötig, sie nochmal selber einzulesen.
    hmmm... da haste recht, aber der versionsstring von meinem programm ist in den sourcen festgelegt. ich downloade die datei, die die versionsnummer enthält, lese sie aus und lasse sie dann in einem Textfeld anzeigen, somit wird erst der download button aktiviert wenn die version höher ist als die vorgeschriebene, sonst bleibt er deaktiviert.


    Kommt vielleicht etwas am stderr?
    wie du den sourcen von meinem link sehen kannst über gebe ich auch die stdout aus, aber da geschieht nichts, keine anzeige, nichts ...

    Gruß
    ChMaster|LFreak

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von ChMaster|LFreak
    hmmm... da haste recht, aber der versionsstring von meinem programm ist in den sourcen festgelegt. ich downloade die datei, die die versionsnummer enthält, lese sie aus und lasse sie dann in einem Textfeld anzeigen, somit wird erst der download button aktiviert wenn die version höher ist als die vorgeschriebene, sonst bleibt er deaktiviert.
    Vielleich reden wir über einen anderen Codeteil. Ich meine da hier
    Code:
            file = QDir::homeDirPath();
            file.append( "/.kde/share/config/dbfevrc" );
     
            // read versions string
            KConfig *readVersion( kapp->config() );
            readVersion = new KConfig( file );
            readVersion->setGroup( "DBoxFE Version" );
            str_ver = readVersion->readEntry( "Version", str_ver );
    readVersion ist die selbe Config wie kapp->config() sofern dein Programm dbfevrc heißt.

    wie du den sourcen von meinem link sehen kannst über gebe ich auch die stdout aus, aber da geschieht nichts, keine anzeige, nichts ...
    Tut mir leid, in dem Code der in deinem ersten Posting verlinkt ist, wird nur Stdout gelesen, von Stderr sehe ich da nix.

    Ciao,
    _
    Gruß
    ChMaster|LFreak[/QUOTE]
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    29.10.2003
    Ort
    Bayern
    Beiträge
    70
    danke, jetzt seh ich erst das ich es 2x angegeben habe, es reicht nur einmal
    anstatt:
    Code:
    readVersion = new KConfig( file );
    kann man auch das hier schreiben
    Code:
    readVersion = new KConfig( "dbfevrc" );
    Tut mir leid, in dem Code der in deinem ersten Posting verlinkt ist, wird nur Stdout gelesen, von Stderr sehe ich da nix.
    stimmt ich habe nur stdout, stderr kann ich erst dann testen wenn mein rechner wieder da ist
    da ich an einem anderen sitze. dieser hatt keine devel packete von KDE installiert und ich installiere
    sie auch nicht, sonst gibt es einen auf den Deckel

    Gruß
    ChMaster|LFreak

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von ChMaster|LFreak
    danke, jetzt seh ich erst das ich es 2x angegeben habe, es reicht nur einmal
    anstatt:
    Code:
    readVersion = new KConfig( file );
    kann man auch das hier schreiben
    Code:
    readVersion = new KConfig( "dbfevrc" );
    Trotzdem noch einmal zuviel.
    Die Config deines Programmes ist schon als KConfig Instanz verfügbar!!11!

    stimmt ich habe nur stdout, stderr kann ich erst dann testen wenn mein rechner wieder da ist
    Du kannst auch ein Wrapper Script starten und dort stderr von tar auf stdout umleiten und so auch stderr in deinem Programm sehen.

    tar $@ 2>&1

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  9. #9
    Registrierter Benutzer
    Registriert seit
    29.10.2003
    Ort
    Bayern
    Beiträge
    70
    thx, ich mach es nun Mit KTar und KArchive (habe da einige bsps gefunden)
    (In den KDevelop sourcen sind 2 bsp enthalten, sind sozusagen keine bsp aber funktionieren)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •