findNextFile nach datum sortiert suchen und ordner ignorieren klappt nicht
-
oh ja natürlich, wie konnte ich nur
ich hab es aus meinem code rauskopiert, der ist bischen länger und da hab das wohl unterschlagen wird natürlich sofort korigiert...ja so ist das eben bei copy and paste^^
ich hoffe jetzt hab ich alles...aber vielleicht kann mir ja trotzdem jemand bei meinem problem helfen
#include<stdio.h> #include <windows.h> int main{ HANDLE fHandle; WIN32_FIND_DATA wfd; fHandle = FindFirstFile( /*showSourceFolder*/"c:\\*", &wfd ); do { if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) { //ignoriere Ordner printf("\nOrdner: %s",wfd.cFileName); } else { //mach irgendwas mit den dateien printf("\nDatei: %s",wfd.cFileName); } }while(FindNextFile( fHandle, &wfd )); FindClose(fHandle); system("pause"); return 0; }
-
ok...da fehlen noch die klammern nach main, die kann man sich ja dazudenken^^
-
Erstelle doch zuerst eine Liste mit den entsprechenden Informationen und dann sortierst Du sie gemäss deinem Wunsch.
Simon
-
ich muss mal schauen, ob ich hinbekomme
ich habe das bis jetzt nur mit char arrays gemacht, weil ich mit den pointern immer das problem hatte, dass ich nicht so einfach den namen abspeichern konnte, da sich der Inhalt von wfd.cFileName ja bei jedem aufruf ändert.
So hatte ich das problem, dass in meinem string array überall der gleiche name stand
Irgendwann habe ich es dann aufgegeben und es dann eben mit char arrays gemacht.Hier ist halt das problem, dass ich nicht weis, wie ich das array während der programmlaufzeit dynamisch erweitern kann bzw. ich bekomme das nicht hin
es sollte irgendwie mit malloc gehen, aber der liefert mir nur einen pointer zum reservierten speicher. dann habe ich nämlich wieder pointer mit denen ich probleme bei der stringverarbeitung habekannst du mir vielleicht einen tip geben, wie ich die am besten anstellen kann, damit ich nicht wieder das gleiche problem habe
-
blechtrommler schrieb:
kannst du mir vielleicht einen tip geben, wie ich die am besten anstellen kann, damit ich nicht wieder das gleiche problem habe
Hallo!
Lern am besten den Umgang mit Zeigern.
-
Tipp schrieb:
blechtrommler schrieb:
kannst du mir vielleicht einen tip geben, wie ich die am besten anstellen kann, damit ich nicht wieder das gleiche problem habe
Hallo!
Lern am besten den Umgang mit Zeigern.Gute Idee
Hast du ein Anschauungsbeispiel, pls?
-
theta schrieb:
Erstelle doch zuerst eine Liste mit den entsprechenden Informationen und dann sortierst Du sie gemäss deinem Wunsch.
Nur um das zu vervollständigen: Du kannst die Reihenfolge, wie FindNextFile die Dateien auflistet, afaik nicht beeinflussen.
-
Genau. Das war der Grund, dass ich das geschrieben habe.
Ich sollte den auch hinschreiben, sonst ists nicht nachvollziehbar.
Danke und Gruss
Simon
-
ich hab es mit der Liste hinbekommen
war eine gute idee, dass ich mal den umgang mit zeigern lerne
hab mich sonst immer davor gedrückt...mein problem war, dass ich immer nur den zeiger gespeichert habe und nicht den inhalt kopiert.
ich musste einfach die funktion strcpy() benutzen...dass ich da nicht selber draufgekommen bin
danke für die kritiken^^ hat mich sehr weiter gebracht
ach ja, für jeden, den es interessiert. Das mit der reihenfolge habe ich so gelöst:
Erstmal:
asctimeToMyTime ist meine eigene Funktion, die aus dem String, den asctime() liefert einen doublewert macht, damit ich diesen einfach vergleichen kann
asctime() liefert zum Bsp.: Wed Jan 02 02:03:55 1980\n\0
asctimeToMyTime macht daraus (0.YYYYMMDDhhmmss) : 0.19800102020355Damit bekomme ich das erstellungsdatum als double, was ich dann in einer liste mit zugehörem dateinamen gespeichert habe (wie ich die liste erzeugt habe kopiere ich jetzt nicht rein... versuch macht kluch
)
aber hier ein gutes beispiel zum lernen:
http://www.wi-bw.tfh-wildau.de/~hendrix/grundstudium/c/skript/verkettete_listen.htmlstruct stat file_stat; struct tm *gmt; stat( tmpPath, &file_stat ); gmt = gmtime(&file_stat.st_ctime); asctimeToMyTime(asctime(gmt));
das habe ich dann natürlich in der else bedingung der schleife gemacht und somit erstmal alle dateien mit zugehörigem erstellungsdatum erhalten
anschließend habe ich nur noch die liste nach den erstellungsdaten sortiert so wie ich es gebraucht hatte und das wars dann schon
-
ach ja an stelle von tmpPath muss natürlich ein String mit pfadangabe zur datei hin