ListWidget Dateien Ausgeben
Habe da noch ein Paar Fehler !!!!
Folgendes Passiert
1. Der ListWidget zeigt mir alle .xsd dateien an sollte aber nur die anzeigen die signiert sind das heist jede signierte .xsd Datei gibt is doppelt nur das die zweite nicht mit .xsd endet sonder mit .p7s .
Beispiel:
diese .xsd Datei soll er Anzeigen weil es auch eine Signatur Datei gibt.
data1.xsd data1.p7s
diese .xsd Datei soll er nicht Anzeigen weil es keine Signature Datei gibt
data2.xsd
--------------------------
Das zweite Problem ist das wenn ich nochmal auf Durchsuchen klicke und einen anderen oder den gleichen Pfad angebe die alte Liste noch vorhandes ist und er die neuen Datein darunter anhängt.
Folgendes Passiert
1. Der ListWidget zeigt mir alle .xsd dateien an sollte aber nur die anzeigen die signiert sind das heist jede signierte .xsd Datei gibt is doppelt nur das die zweite nicht mit .xsd endet sonder mit .p7s .
Beispiel:
diese .xsd Datei soll er Anzeigen weil es auch eine Signatur Datei gibt.
data1.xsd data1.p7s
diese .xsd Datei soll er nicht Anzeigen weil es keine Signature Datei gibt
data2.xsd
--------------------------
Das zweite Problem ist das wenn ich nochmal auf Durchsuchen klicke und einen anderen oder den gleichen Pfad angebe die alte Liste noch vorhandes ist und er die neuen Datein darunter anhängt.
Klappt doch!Coca hat geschrieben:Habe da noch ein Paar Fehler !!!!
Folgendes Passiert
1. Der ListWidget zeigt mir alle .xsd dateien an sollte aber nur die anzeigen die signiert sind das heist jede signierte .xsd Datei gibt is doppelt nur das die zweite nicht mit .xsd endet sonder mit .p7s .
Beispiel:
diese .xsd Datei soll er Anzeigen weil es auch eine Signatur Datei gibt.
data1.xsd data1.p7s
diese .xsd Datei soll er nicht Anzeigen weil es keine Signature Datei gibt
data2.xsd
--------------------------
Das zweite Problem ist das wenn ich nochmal auf Durchsuchen klicke und einen anderen oder den gleichen Pfad angebe die alte Liste noch vorhandes ist und er die neuen Datein darunter anhängt.
Wenn Du die Liste einlädst, lösche sie einfach vorher über listwidget->clear().
Um zu vergleichen legst du dir halt noch eine Stringlist mit "*.p7s" Dateien an und vergleichst die Namen z.B. über if (s.section(".",0,0)==t.section(".",0,0)) miteinander oder anders und fügst im Falle des Erfolgs nur dann entsprechende Einträge ein.
Zuletzt geändert von Shadow am 4. April 2006 16:48, insgesamt 1-mal geändert.
Verstehe ich nicht ganz Shadow wie ich das machen soll !![/quote]Um zu vergleichen legst du dir halt noch eine Stringlist mit "*.p7s" Dateien an und vergleichst die Namen z.B. über if (s.section(".",0,0)==t.section(".",0,0)) miteinander oder anders und fügst im Falle des Erfolgs nur dann entsprechende Einträge ein.
Die Logik musst du schon selbst implementieren.Coca hat geschrieben:Verstehe ich nicht ganz Shadow wie ich das machen soll !!Um zu vergleichen legst du dir halt noch eine Stringlist mit "*.p7s" Dateien an und vergleichst die Namen z.B. über if (s.section(".",0,0)==t.section(".",0,0)) miteinander oder anders und fügst im Falle des Erfolgs nur dann entsprechende Einträge ein.
Ich habe dir nur mal einen Tipp geliefert, wie man es einfach machen könnte ==> siehe QT-Assistant unter "QString".
Shadow die Fuktionen habe ich nur bin ich mir noch nicht im Klaren wie ich das aufbauen soll
Ich weis so wie ich das geschrieben habe geht es gar nicht. Nur wie soll ich das mit den schleifen hinbekommen. Das ist der Quellcode nur die Funktionen muss Logik aufgerufen werden in einer Schleife.
Ich weis so wie ich das geschrieben habe geht es gar nicht. Nur wie soll ich das mit den schleifen hinbekommen. Das ist der Quellcode nur die Funktionen muss Logik aufgerufen werden in einer Schleife.
Code: Alles auswählen
void XmlTool::InactiveList( QString s)
{
ui.InactiveList->clear();
QDir testDir(s);
for (int i=0;i<testDir.entryList(QStringList("*.xsd")).count();i++)
{
QString fileName = testDir.entryList(QStringList("*.xsd")).at(i);
QString filePath = testDir.absoluteFilePath(fileName);
}
for (int i=0;i<testDir.entryList(QStringList("*.p7s")).count();i++)
{
QString fileName2 = testDir.entryList(QStringList("*.p7s")).at(i);
QString filePath2 = testDir.absoluteFilePath(fileName2);
}
QString file1 = fileName.section('.',-1);
QString file2 = fileName2.section('.',-1);
int erg = QString::compare(QString file1, QString file2 );
if (erg = 0)
{
ui.InactiveList->addItem(fileName);
}
}
Das ist nicht zu übersehen, Du übernimmst die Sachen ohne zu wissen was Du da tust. Die meisten Hinweise hier, dienen dazu Anhaltspunkte zu geben, Hinweise, wie man eine Lösung erreichen kann. Niemand will dir das programmieren abnehmen.Coca hat geschrieben:Shadow die Fuktionen habe ich nur bin ich mir noch nicht im Klaren wie ich das aufbauen soll![]()
Warum schreibst Du es dann so?Coca hat geschrieben:Ich weis so wie ich das geschrieben habe geht es gar nicht.
Ich würde die Sache anders angehen, vielleicht ist es dann auch etwas klarer.
Code: Alles auswählen
void XmlTool::InactiveList( QString s)
{
ui.InactiveList->clear();
QDir testDir(s);
QFileInfoList fi = testDir.entryInfoList(QStringList() << "*.xsd");
for (int l=0; l<fi.count(); l++)
{
if (testDir.exists(fi[l].baseName() + ".p7s"))
ui.InactiveList->addItem(fileName);
}
}
Ich habe es momentan versucht so zu lösen
Der Zeigt mir hier nicht im ListWidget an, nach dem ich Debuged habe liegt der Fehler bei den beiden Funktionen
Es ist ja so ich will die datei namen dieser beiden dateien vergleichen und muss das hintere teil .xsd und .p7s weg schneiden und vergleichen. Doch die endungen kriege ich nicht weg geschnitten ich weis nicht genau was ich da falsch mache bei dem Aufruf.
Code: Alles auswählen
void XmlTool::InactiveList( QString s)
{
ui.InactiveList->clear();
QDir testDir(s);
for (int i= 0; i < testDir.entryList(QStringList("*.xsd")).count() && testDir.entryList(QStringList("*.p7s")).count() ; i++)
{
QString fileName = testDir.entryList(QStringList("*.xsd")).at(i);
QString filePath = testDir.absoluteFilePath(fileName);
QString fileName2 = testDir.entryList(QStringList("*.p7s")).at(i);
QString filePath2 = testDir.absoluteFilePath(fileName2);
QString file1 = fileName.section('.',-2,1);
QString file2 = fileName2.section('.',-2,1);
int erg = QString::compare(file1,file2 );
if (erg = 0)
{
ui.InactiveList->addItem(fileName);
}
}
}Code: Alles auswählen
QString file1 = fileName.section('.',-2,1);
QString file2 = fileName2.section('.',-2,1);
Schmeiss es weg. Für das hantieren mit Dateien gibt es QDir, QFile und QFileInfo. An der Stelle sollte man nicht mit Strings arbeiten und anfangen sie in ihre Teile zu zerlegen. Es geht wirklich einfacher und Du brauchst dich nicht um unterschiedliche Pfadtrenner und mehrere Punkte in Dateinamen zu kümmern.Coca hat geschrieben:Ich habe es momentan versucht so zu lösen
Das sollte, wie gesagt, auch nur als Anhaltspunkt dienen, da ich jetzt nicht noch den kompletten QT-Assistant nach eine eleganten Lösung durchgehe, für ein Problem, das ich nicht selbst lösen muß. So leid es mir tut....macman hat geschrieben:Schmeiss es weg. Für das hantieren mit Dateien gibt es QDir, QFile und QFileInfo. An der Stelle sollte man nicht mit Strings arbeiten und anfangen sie in ihre Teile zu zerlegen. Es geht wirklich einfacher und Du brauchst dich nicht um unterschiedliche Pfadtrenner und mehrere Punkte in Dateinamen zu kümmern.Coca hat geschrieben:Ich habe es momentan versucht so zu lösen