Ordner Inhalt
-
Moinsen
Folgende Vorgehensweise hab ich für C++ gefunden, aber meine Software schreibe ich
ja in C. Gibt es da eine Alternative zu diesem Code oder soll ich diesen Code
verwenden? Es ist aber unschön C und C++ zu mischen.#include <windows.h> #include <stdio.h> int main() { WIN32_FIND_DATA FData; HANDLE hSearch = FindFirstFile("C:\\Users\\ITEDVO\\Documents\\MineCraft\\Quiz\\*.*",&FData); BOOL MoreFiles = FALSE; int cnt_dir = 0, cnt_file = 0; if (hSearch == INVALID_HANDLE_VALUE) return -1; do { // Ist das ein Ordner ? if (FData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) { // Den Ordnernamen ausgeben printf("(Ordner) %s\n", FData.cFileName); cnt_dir++; // Ordnerzähler um 1 erhöhen } // Wenn nicht else { // Den Dateinamen ausgeben printf("(Datei) %s\n",FData.cFileName); cnt_file++; // Dateizähler um 1 erhöhen } MoreFiles = FindNextFile(hSearch,&FData); } while (MoreFiles); FindClose(hSearch); printf("\nInsgesamt\n"); printf("Ordner: %d\n", cnt_dir); printf("Dateien: %d\n\n", cnt_file); system("PAUSE"); return 0; }Ich würd gerne in C bleiben, also noch.
-
Das hat nichts mit C++ vs. C zu tun, der Code da oben ist eigentlich reines C. Das einzige Problem ist dass der Code eben nur für Windows funktioniert...
-
Hab es nur überflogen.
Wo siehst du da C++?
Versuch das einfach als C zu kompilieren.
Wenn ich was übersehen hab, schreib was und wo
MfG f.-th.
-
sagen wir mal so, ich habs mir nich wirklich angeschaut und darauf vertraut dass wenne in autor einer funktion schreibt es ist für C++, dass es auch so ist.
aber wenn das jetzt wirklich nix mit C++ vs. C zu tun hat, dann hat sich meine
Frage erübrigt!
-
Zeile 10 und 11 könnten mit C89 (Visual Studio) problematisch werden. Das kannst du aber umgehen, indem du alle Variablen deklarierst bevor du die erste Funktion aufrufst.
-
cooky451 schrieb:
Zeile 10 und 11 könnten mit C89 (Visual Studio) problematisch werden.
Warum?
-
Weil C89 Variablendeklarationen nur am Blockanfang unterstützt...
-
µngbd schrieb:
Warum?
Weil Microsoft nur C++ mag

-
cooky451 schrieb:
µngbd schrieb:
Warum?
Weil Microsoft nur C++ mag

^^ danke für den hinweis... aber es wird lediglich ein warning ausgegeben und kein fehler, von dem her kann ich diese warning mit gutem herzen ignoieren =b
-
dot schrieb:
Weil C89 Variablendeklarationen nur am Blockanfang unterstützt...
Gehen die nicht bis Zeile 11?
-
Stellt euren Compiler auf C99 und gut ist

-
Sry, das ist natürlich absolut richtig, nächstes Mal besser lesen...
-
ok, doch noch ne frage... muss ich jetzt den kompletten pfad angeben? oder reicht
es wenn, jetzt so zum beispiel, die *.exe im ordner:C:\users\ITEDVO\Documents\Visual Studio 2010\Projects\LearnEasy\Release
ist, dass ich dann, wenn ich den ordnerinhalt von:
C:\users\ITEDVO\Documents\Visual Studio 2010\Projects\LearnEasy\Release\data
auslesen möchte, einfach angebe:
HANDLE hSearch = FindFirstFile("\data\\*.*",&FData);oder muss der direkte pfad angegeben werden?
falls ja, wie kann ich den standort der *.exe finden?
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum C (C89 und C99) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das geht auch mit relativen Pfaden:
HANDLE hSearch = FindFirstFile("data/*",&FData);Den Pfad der eigenen Anwendung kannst du mit GetModuleFileNameEx(GetCurrentProcess(),...) ermitteln.
-
yahendrik schrieb:
GetModuleFileNameEx(GetCurrentProcess(),...)[/url] ermitteln.
Nicht mit GetCurrentDirectory()?
-
Nein, mittels
SetCurrentDirectorykann das Arbeitsverzeichnis ja ständig geändert werden. Der Pfad der eigenen Anwendung ist aber immer der Gleiche.
SetCurrentDirectory ist nützlich, wenn man mit relativen Pfaden arbeiten möchte. Hat man einen Ordner c:\test, kannSetCurrentDirectoy("c:\\")aufgerufen und FindFirstFile nur "test/*" übergeben werden.
-
yahendrik schrieb:
SetCurrentDirectory ist nützlich, wenn man mit relativen Pfaden arbeiten möchte.
War das nicht die Frage?^^
-
danke, werd dass jetzt mal einbaun... und danke dass der thread verschoben wurde =b
hmm, hät jetzt ne andere frage, passt aber nich in WinAPI rein, wäre in ANSI-C besser
aufgehoben, ich glaub ich werd wohl für eine einzige Software 5 verschiedene Thread offen haben
-
f.-th. schrieb:
Wo siehst du da C++?
Naja,
cnt_file++;