Deklarationen
QString str1;
QString str2;
QString path;
QString pathfile;
QString rootfile;
QString targetfile;
QString ziel;
QStringList filelist;
QStringList targetfilelist;
QStringList filePathlist;
filelist enthält alle dateien aus einem ordner (z.b bilder) aber nur als fileName()
dh.
japan-_-3.gif
japan-_-4.gif
paste-_-5.png
open-_-5.png
...
das gleiche gilt für targetfilelist, es enthält aber eine liste anderer Dateien aus einem anderen Verzeichnis(durchsucht auch unterordner)
d.h.
japan-_-1.gif
japan-_-2.gif
paste-_-1.png
open-_-1.png
...
filepathlist ist genauso wie targetfilelist, aber enthält zusätzlich pfadangaben
d.h.
/home/qt/work/qt/projekt/pics2/japan1/japan-_-1.gif
/home/qt/work/qt/projekt/pics2/japan1/japan-_-2.gif
/home/qt/work/qt/projekt/pics2/paste/paste-_-1.gif
/home/qt/work/qt/projekt/pics2/open/open-_-1.png
...
rootfile holt die strings mit for schleife aus filelist
japan-_-1.gif
...
targetfile das gleiche mit targetfilelist
japan-_-3.gif
...
pathfile das gleiche mit filepathlist
/home/qt/work/qt/projekt/pics2/japan1/japan-_-1.gif
str1 holt sich den string von rootfile bis zu dem zeichen -_- (str1 kann öfters z.b japan heißen)
str2 holt sich den string von targetfile bis zu dem zeichen -_- (str2 auch)
Hier ein kleiner teil vom code, welches auch der wichtigste ist
Code: Alles auswählen
void MyWidget::compareFiles()
{
listWidget->clear();
QString str1;
QString str2;
QString path;
QString pathfile;
QString rootfile;
QString targetfile;
QString ziel;
int f = 0;
int v = 0;
for (int i = 0; i< filelist.size(); ++i)
{ rootfile = filelist.at(i);
str1 = rootfile.section("-_-", 0, 0);
for (int i = 0; i < targetfilelist.size(); ++i)
{ targetfile = targetfilelist.at(i);
str2 = targetfile.section("-_-", 0, 0);
for(int i = 0; i<filePathlist.size(); i++)
{
pathfile = filePathlist.at(i);
if (str1.localeAwareCompare(str2))
{ if (pathfile.contains(str1))
{ path = pathfile.section(targetfile, 0, 0);
}
ziel = path + rootfile;
QString start = directoryComboBox->currentText() + rootfile;
QFile::rename(start , ziel);
}
}
}
listWidget->addItem(rootfile + " moved to " + ziel);
filesMovedLabel->setText(QString("%1").arg(listWidget->count()) + " file(s) moved");
}
}Ich habe das ganze ausgeben lassn wie er die dateien verschiebt:
japan-_-3.gif moved to /home/qt/work/qt/projekt/pics2/japan1/japan-_-1.gifjapan-_-3.gif
japan-_-4.gif moved to /home/qt/work/qt/projekt/pics2/japan1/japan-_-1.gifjapan-_-4.gif
open-_-5.png moved to /home/qt/work/qt/projekt/pics2/open/open1-_-1.pngopen-_-5.png
paste-_-5.png moved to /home/qt/work/qt/projekt/pics2/paste/paste-_-1.pngpaste-_-5.png
usw...
wenn ich aber statt if (pathfile.contains(str1)), if (pathfile.contains(targetfile)) reinschreibe, verschiebt er alle dateien durcheinander
japan-_-3.gif moved to /home/qt/work/projekt/pics2/paste/japan-_-3.gif
japan-_-4.gif moved to /home/qt/work/projekt/pics2/paste/japan-_-4.gif
open-_-5.png moved to /home/qt/work/qt/projekt/pics2/japan1/open-_-5.png
paste-_-5.png moved to /home/qt/work/qt/projekt/pics2/japan1/paste-_-5.png
an was liegt es?ich habe so eine vermutung das es an meinen schleifen liegt, jedoch hocke ich seit 2 tagen schon dran und finde immer noch nichts xD
falls weiterer code gewünscht wird werde ich dies hinzufügen.