Verzeichnissinhalt mit allen Dateien und Unterordnern auflisten
-
give me a tooltip schrieb:
HANDLE hFile[256];aber kannst auch einfach pro rekursionsebene nur ein HANDLE hFile zu nehmen, denn die lebt sehr gut als lokale variable in der rekursiven funktion.
-
Reflector Hector schrieb:
verstehe das prob iwie nich
Das gewünscht Ziel habe ich ausreichend erklärt, einen mir bekannten Lösungsweg beschrieben und hierzu Fragen gestellt. Aber der einfachheithalber hier noch mal die Frage:
ist diese Vorgehensweise sinnvoll und welchen Wert nehme ich als Größe für das Array? Anmerken möchte ich noch, daß ich nur ansi-c und winapi verwende
Ich brauche keinen Code, den kann ich mir selbern schreiben, es geht rein um alternative und/oder sinnvolle Lösungen in Textform.
-
volkard schrieb:
queue nochZuMachen; nochZuMachen.push(".");//oder C:/ oder wasauchimmer while(!nochZuMachen.isEmpty) { string current=nochZuMachen.pop(); while(FindFirst und so) { if(datei) cout<<date.name<<endl; else if(dir.name!="." and dir.name!="..") nochZuMachen.push(current+"/"+dir.name); } }genial, oder?
Sorry, ich kann echt nur plain-c und winapi programmieren, ich verstehe den Code nur bedingt, trotzdem danke für die Mühe.
-
Ähm mein Beitrag 2x weiter oben war nicht an dich gerichtet volkard, also bitte nicht falsch verstehen.
-
give me a tooltip schrieb:
Sorry, ich kann echt nur plain-c und winapi programmieren, ich verstehe den Code nur bedingt, trotzdem danke für die Mühe.
klar, du hast keine klassen wue queue. das müßte man in c per hand nachprogrammieren.
aber für dich isses viel einfachder, du machst es rekursiv mit lokalen variabllen.schon wieder nicht ausprogrammiert, sondern nur als grobe planung, die fast wie C aussieht:
void list(char* name) { HANDLE hFile;//lokal und deswegen pro ebene neu ohne obere ebenen kaputtzumachen FindFirstFile(hFile,name oder so while(nochDateienDa) { if(datei) printf("%s",date.name); else if(dir.name!="." and dir.name!="..") { char neu[MAX_PATH]; strcpy(neu,name); strcat(neu,"/"); strcat(neu,dir.name); list(neu);//hier der tolle rekursive aufruf } } }
-
Danke volkard habe das Einlesen nun realisiert. Leider werden bei mir die Zeichen ä ö ü ß ° § falsch dargestellt, hat da jemand eine Lösung für mich?
-
Poste mal deinen Code...wie soll man da sonst helfen?
-
give me a tooltip schrieb:
Danke volkard habe das Einlesen nun realisiert. Leider werden bei mir die Zeichen ä ö ü ß ° § falsch dargestellt, hat da jemand eine Lösung für mich?
das ist ganz normal so. die konsole zeigt umlaute falsch an.
ignoriere das am besten ganz einfach.
willst du wirklich rightig anzeigen, ist vielleicht http://msdn.microsoft.com/de-de/library/ms647473(en-us,VS.85).aspx ein guter suchstart.
ich gehe davon aus, daß du das nur als vorbereitung machst, um ein prog zu schreiben, das die ganzen platte ausliest und *.mp3-dateien sucht und die alle nacheinander abspielt oder sowas. für das abspielen und so kannste die entsprechende abspielfunktion benutzen, und die klappt auch, obwohl der string in der konsone falsch angezeigt wird.
-
Moin, ich benutze die zlib.lib von Jean-loup Gailly und Mark Adler und schreib mir gerade eine dll die sowohl Dateien, Regestryeinträge als auch Datenpuffer/Strukturen von Programmen in eine Datei packen und entpacken kann. Meine Programmalgorithmen sind nun soweit fertig. Beim Paken von Verzeichnissen auf meiner HDD ist mir dann aufgelallen, das die Umlaute in den gezipten Dateien durch andere Zeichen ersetzt wurden. Zum Reinschauen in die Zip Datei habe ich dann den Total Commader benutzt. So jetzt kommt's aber, wenn ich meine Entpackroutine benutze wird die Datei wieder mit den richtigen Umlauten wiederhergestellt, passt dann ja eigentlich so weit. Ich habe für die Routinen zwei Testprogramme geschrieben, eines als Komandozeile und eines als Fensteranwendung. Die Textausgaben der Ent-/Packroutinen werden per sprintf in einen Buffer geschrieben, beim Konsolen Programm wird der Buffer per printf ausgegeben und die Umlaute falsch dargestellt, bei der Fensteranwendung wird der Buffer per SendMessage an den Eventhandler des Hauptprogrammes geschickt und dort ausgewertet und erstmal testhalber in einer Editbox dargestellt, und hier stimmen die Umlaute wieder, seltsam. Zu guter letzt habe ich mir mal eine und dieselbe Datei die Umlaute im Namen hat jeweils mit Total Commander und auch mit meiner Packroutine gepackt und per HEX Editor geöffnet und nach dem Eintrag für den Namen gesucht. In der Total Commander gepackten Datei sind die Umlaute richtig geschrieben und in der von meiner Packroutine erstellten Datei sind die Umlaute durch andere Zeichen ersetzt. Abschließend könnte man eigentlich sagen, wenn es mit der selbstprogammierten Ent-/Packroutine doch funktioniert, ist es ok, jedoch störrrt mich die Ausgabe in der Konsole und auch die fehlende Kombatibilität zu anderen Packprogrammen. Da ich nun schon so viel Zeit in die Erstellung der Routinen investiert habe, stört mich dieser Schönheitsfehler schon und ich würde ihn gerne Beseitigen. Ferner würde ich dieses Problem gerne in meinem Teil des Codes und nicht im Programmcode der zlib.lib (wo ich ja auch den Sourcecode besitze) lösen, da ich bei zukünftigen Änderungen der zlib nicht immer deren Code umschreiben will, sondern eine neu releaste zlib 1:1 in meinem Programm wieder verwenden möchte. Shell32off meinte ich ich solle mal etwas Code posten, ich denke das ist keine so gute Idee, weil das schon recht Seitenfüllend wäre. Für Interessierte: den Quellcode für die zlib.lib gibt es übrigens hier -> http://zlib.net/
-
Aua, das tut ja weh beim Lesen.
Versuchs mal damit:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
-
Danke volkard war ein guter Hinweis mit OemToChar und CharToOem.Ich habe meinen Code an den entsprechenden Stellen ergänzt und es scheint zu klappen.