[gelöst]unverständliche ausgabe, need help
Verfasst: 24. Oktober 2007 17:02
Ziel des Programms ist Dateien von einem Verzeichnis(sagen wir rootfolder) in ein anderes Verzeichnis(targetfolder, hat auch Unterverzeichnisse) welches Dateien mit gleichem string hat, zu verschieben.
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
das ganze funktioniert auch, aber er hängt an den dateinamen komischerweise noch den dateinamen aus targetfile rein
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.
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.