zfoxC++
Mivel egy fájlból veszem a beállításokat, ami gyakran változik, oda nem szívesen írnék hexa szövegeket, oda értelmezhető magyar mondatok kellenek. A programban beírt statikus szövegek esetén viszont jó lehet. (pl hónapok nevei).
QFile cfgfile(programDir + "beallitasok.cfg");
if (!cfgfile.open(QIODevice::ReadOnly)) {
workingError("beallitasok.cfg fájl olvasási hiba!", true);
return false;
}
preferences = readLinesWithoutComment(QString::fromUtf8(cfgfile.readAll().constData()), "\n");
cfgfile.close();
s = valueFromContentForKey(preferences, "title");
if (s != "")
ui->title->setText(s);
Röviden: beolvasom a beallitasok.cfg fájlt soronként kommentek nélkül, majd a title nevű értéket beállítom a ui->title QLabel-be. Ennyi, egyszerű. Annyi, hogy a két alábbi függvényt én írtam saját kezüleg, tehát nem valahonnan bemásoltam. Tehát abban is lehet természetesen a hiba.
És a kódban használt két függvény:
QStringList MainWindow::readLinesWithoutComment(QString content, QString lineSeparator) {
QStringList returnList;
if (content == "")
return returnList;
QStringList contentList = content.trimmed().split(lineSeparator);
if (contentList.size() < 1)
return returnList;
int i = 0;
for (i = 0; i < contentList.size(); i++)
if ((QString::compare(contentList[i].trimmed(), "", Qt::CaseInsensitive) != 0)) // ezzel ellenorizzuk, hogy az ures sorokat hagyja ki
if ((QString::compare(contentList[i].mid(0, 1), "#", Qt::CaseInsensitive) != 0))
returnList
QString MainWindow::valueFromContentForKey(QStringList content, QString key) {
for (int i = 0; i < content.size(); i++) {
if (QString::compare(key, content[i].split("=")[0].trimmed(), Qt::CaseInsensitive) == 0)
return (content[i].split("="))[1].trimmed();
}
return "";
}