Innerhalb QT .exe mit Argumenten Ausfuehren
-
@NeueKlasse
Denken Sie daran, dass mein Deutsch nicht so gut ist :)Ich weiss ihrer Datei ist
.exe
genannt. Aber das kann zu Problemen führen. Ich habe bewusst darum gebeten, das zu verwenden, genau was ich geschrieben habe:QFile::copy(":/rec/Software/bmp2c-escher3d.exe", work_path+"/File.txt"); QFile::remove(work_path+"/File.txt");
.txt
nicht.exe
! (Und keinQProcess
während wir das testen.) Bitte. -
@NeueKlasse
Mir ist noch ein anderer Gedanke gekommen, ich kann vielleicht erraten, wo das Problem liegt... :)Qt "Resource" Datei (
:/rec/...
) ist "read-only". MitQFile::copy()
möglicherweise bleibt die kopierte Datei schreibgeschützt. Ich selbst verwende Linux, nicht Windows. Aber ich glaube, das mit WindowsQFile::remove()
kann ein "readonly" Datei nicht löschen.QFile::copy(":/rec/Software/bmp2c-escher3d.exe", work_path+"/File.txt"); QFile::setPermissions(work_path+"/File.txt", QFile::ReadOther | QFile::WriteOther); // Dieses! QFile::remove(work_path+"/File.txt");
?
-
Das war die Loesung!, setPermissions.... (.txt file konnte zuvor ebenfalls nicht geloescht werden...)
Danke!gibt es hier noch eine andere Moeglichkeit ein File zu laden?
ich moechte keinen Dialog mehr, aber dennoch das Datei format beibehalten (String)//logo_binary (String) gets filled with the File/Name logo_binary = QFileDialog::getOpenFileName(this, work_path+"/SourceLogo.bin"); //this example creates a new QFile named logo_binary => not ok QFile logo_binary(work_path+"/SourceLogo.bin");
-
@NeueKlasse said in Innerhalb QT .exe mit Argumenten Ausfuehren:
setPermissions....
Ja, nur under Windows, unter Linux nicht notwendig.
ich moechte keinen Dialog mehr, aber dennoch das Datei format beibehalten (String)
QFileDialog::getOpenFileName()
ist nur dann der Fall, wenn Sie den Benutzer nach einem Dateinamen fragen möchten.
Wenn Sie bereits wissen, welches Pathanem Sie verwenden möchten, verwenden Sie es einfach. Bereits haben Sie:QFile logo_binary(work_path+"/SourceLogo.bin");
Das stimmt. Also verstehe ich nicht warum "not ok"? Wenn
QFileDialog::getOpenFileName()
gibtwork_path+"/SourceLogo.bin"
zurück dann ist das das selbe wieQFile logo_binary(work_path+"/SourceLogo.bin");
ohnegetOpenFilename()
. "das Datei format beibehalten" ist nicht relevant. -
@JonB
ich muss hier leider einen Screenshot einfuegen damit man sieht was ich meine:logo_binary ist in der ersten Zeile ein QString => Orange Farbe
und in der zweiten Zeile ein QFile => Dunkel Blaue Farbeim moment ist es so das es NUR ueber den QFileDialog funktioniert, ansonsten:
QFSFileEngine::open: No file name specifieddas File wird im QString Format hier weiterverwendet:
QFile *file = new QFile(logo_binary, NULL); file->open(QIODevice::ReadOnly);
-
Christian Ehrlicher Lifetime Qt Championreplied to NeueKlasse on last edited by Christian Ehrlicher
Ich verstehe das Problem nicht. Übergib dem QFile Konstruktor einfach den zusammengesetzten string so wie du ihn auch an QProcess übergibst. Wo ist da das Problem? Und QFile muss nicht auf den heap angelegt werden. Einfach auf den Stack und gut ists.
-
ich verstehe nicht ganz auf was du hinaus moechtest, wie bereits oben beschrieben erzeugt
QFile logo_binary("mein Pfad");
eine QFile Variable.
ich brauche aber eine QString Variable, sieheQString logo_binary . . . . logo_binary = QFileDialog:getOpenFileName("mein Pfad");
-
QString logo_binary = "Mein Pfad" 🙄
-
This post is deleted!
-
Habe es auch so versucht ohne Aenderung,
hat allerdings gerade geklickt..ich verarbeite das File (..den Pfad) danach folgendermassen weiter:
QFile *file = new QFile(logo_binary, NULL); file->open(QIODevice::ReadOnly);
Also mache ich doch gleich die Vereinfachung hier: (ohne zusaetzlichen Befehl)...
QFile *file = new QFile(work_path+"/SourceLogo.bin", NULL); file->open(QIODevice::ReadOnly);
und funktioniert. Aufjedenfall Danke!