So nach einiger Zeit melde ich mich wieder mit einem Problem und anderen Fragen:
1. Mein größtes Problem.
Mitlerweile kann man auch schon einen Screenshot mit dem Programm machen.
Habe dafür auch noch einen Einstellungsdialog, wie bereits erwähnt, bei dem man Format und Ordner wählen kann.
Soweit kein Problem.
Für meine eigene Übung (und weil ich zugegeben mit den Qt-Xml Sachen einfach nicht zurecht komme) habe ich selber eine kleine Xml-Api geschrieben.
Für die Einstellungen beispielsweise habe ich folgende Datei einstellungen.txt:
<screenshot>
<format>
.jpg
</format>
<pfad>
D:/
</pfad>
</screenshot>
Für das hantieren damit habe ich ein paar Methoden, unter anderem:
Code: Alles auswählen
bool update(string name, string type, string content, string file2) {
//Inhalt der übergebenen Datei öffnen und in Variable schreiben
string file = open_file(file2);
//Position für den Anfang des Einfügens finden
int pos = file.find(name+">", 0);
int pos2 = file.find("<"+type+">", pos);
int laenge = type.length();
pos2 += laenge;
pos2 += 2;
//Position für das Ende des Einfügens finden
int pos3 = file.find("</"+type+">", pos2);
int pos4 = pos3 - pos2;
file.erase(pos2, pos4);
file.insert(pos2, content);
bool ok = save_file(file);
if (!ok) {
return false;
} {
return true;
}
}
MIt der Methode soll man dann beispielsweise das Format in der Datei einstellungen geändert werden.
Für diese Methode habe ich noch folgende, um es ein bisschen übersichtlicher zu machen:
Code: Alles auswählen
string open_file() {
ifstream file_input;
file_input.open("einstellungen.txt", ios_base::in);
if (!file_input) {
return "Datei konnte nicht geöffnet werden";
}
string file_content;
while (file_input.good()) {
file_content += (char) file_input.get();
}
file_input.close();
return file_content;
}
Diese Methode gibt den Inhalt der Datei eisntellungen.txt zurück und funktioniert perfekt (diese Methode wird auch von einer anderen Methode verwendet, die einwandfrei funktioniert).
Dann noch als letztes eine Methode, die dann wieder den neuen Inhalt der Datei wieder in die Datei speichert:
Code: Alles auswählen
bool save_file(string file) {
fstream file_output;
file_output.open("einstellungen.txt", ios_base::in);
if (!file_output) {
return false;
}
file_output << file;
file_output.close();
return true;
}
Aufrufen tue ich es folgendermaßen:
Damit geht aber leider gar nichts.
Bekomme auch keine Fehlermeldung etc.
Zum Test habe ich noch an der selben Stelle folgendes aufgerufen:
In der Datei einstellungen.txt ändert sich aber gar nichts.
Wäre sehr nett wenn jemand den Fehler finden würde!
Und dann noch 2 Fragen zu deinem Code padreigh:
1. Wieso bindest du Headerdateien mit
#include <QtGui/QFrame>
und nicht" normal" mit
#include <QFrame>
ein?
2. Ist es nur gewohnheit, oder hat es einen anderen Grund, dass du die "Methodenkörper" (mir fällt gerade nciht das passende Wort ein) in die Header Datei schreibst?
mfg