Suchfunktion optimieren
-
Hallo Leute,
ich nähere mich dem Ende eines Projekts und wie so üblich stolpert man da noch über einige Sachen.
Ich habe eine nicht rekursive Suchfunktion die einfach nicht laufen will
...void dirsearch(char *path, char *filter) { HANDLE hFindFile; WIN32_FIND_DATA wfd; hFindFile = FindFirstFile(fbprint("%s\\%s", path, filter), &wfd); if (hFindFile != INVALID_HANDLE_VALUE) { do { if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) cout << path <<"\\"<< wfd.cFileName << endl; // Alternativ: printf ("%s\\%s\n", path, wfd.cFileName); }while(FindNextFile(hFindFile, &wfd) != 0); FindClose(hFindFile); } }...weil ich es leider nicht schaffe die fbprint() Funktion gescheit einzubinden
char *fbprint(char *format, ...) // <-- hier liegt das Problem, was setz ich da am Besten ein? { static char buf[1000]; vsnprintf(buf, sizeof(buf), format, (&format)+1); //bei Fehler casten: vsnprintf(buf, sizeof(buf), format, (char *)((&format)+1)); return (char *)buf; }Header sind
#include <windows.h> #include <fstream> #include <iostream> #include <string>main ist
int main() { . . dirsearch("c:\\", "*.txt*"); return 0; }Wäre wirklich für jede Hilfe dankbar!
-
Warum machst du es dir so umständlich? Schreib doch alles in die eine Funktion:
char buf[1000]; sprintf(buf, "%s\\%s", path, filter); hFindFile = FindFirstFile(buf, &wfd);
-
Hey, das wär natürlich die leichteste lösung, habs mal angepasst, aber der Compiler meckert und ich kann nicht viel damit anfangen:
error C2664: 'FindFirstFileW' : cannot convert parameter 1 from 'char [1000]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style castHier nochmal mein jetzt angepasster Code:
Prototyp
void dirsearch(char *, char *);Aufruf in main
dirsearch("c:\\", "*.txt*");Funktion
void dirsearch(char *path, char *filter) { HANDLE hFindFile; WIN32_FIND_DATA wfd; char buf[1000]; sprintf(buf, "%s\\%s", path, filter); hFindFile = FindFirstFile(buf, &wfd); if (hFindFile != INVALID_HANDLE_VALUE) { do { if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) cout << path <<"\\"<< wfd.cFileName << endl; // Original: printf ("%s\\%s\n", path, wfd.cFileName); }while(FindNextFile(hFindFile, &wfd) != 0); FindClose(hFindFile); } }Was mach ich falsch???
-
Probier mal statt char TCHAR
-
Danke für den Tip, funktioniert leider trotzdem nicht

Hab das Prog jetzt mal mit dem Borland Builder compiliert und siehe da, es funktioniert ohne Warnungen oder Fehlermeldungen!
Scheint also ein reines VS 2005 Problem zu sein. Vielleicht hat jemand noch einen Ratschlag, was man vielleicht in den Einstellungen überprüfen kann, damit das Ding endlich auch mit VS durchläuft.
-
ITAzubi23 schrieb:
Vielleicht hat jemand noch einen Ratschlag, was man vielleicht in den Einstellungen überprüfen kann, damit das Ding endlich auch mit VS durchläuft.
ANSI statt Unicode?