Problem mit Arrays und FindFirstFileExA, FindNextFileA



  • hi 😉
    zum problem: ich will ein verzeichnis nach allen vorhandenen .dll files parsen, diese dann in ein array hinzufügen und schließlich später verarbeiten..
    meine such-funktion sieht folgendermaßen aus:

    BOOL FindDLLsInCurrentDirectory()
    {
    WIN32_FIND_DATAA FindFileData;
    memset(&FindFileData,0x00,sizeof(WIN32_FIND_DATAA));
    
    HANDLE hFind;
    
    CHAR szPath[MAX_PATH] = "";
    memset((void*)szPath,0x00,MAX_PATH);
    
    GetCurrentDirectoryA(MAX_PATH,szPath);
    strcat(szPath,"\\*.dll");
    
    if (strlen(szPath) < 4)
    return false;
    
    v_DllArray.RemoveAll();
    
    hFind = FindFirstFileExA(szPath, FindExInfoStandard, &FindFileData, FindExSearchNameMatch, 0, 0);
    
    if (hFind == INVALID_HANDLE_VALUE)
    {
    	MessageBoxA(0,"FindFirstFileEx failed","ERROR",MB_OK);
    	return false;
    }
    
    v_DllArray.Add(FindFileData.cFileName);
    MessageBoxA(0,FindFileData.cFileName,"startAdded",0);
    
    while (GetLastError() != ERROR_NO_MORE_FILES)
    {
    if (FindNextFileA(hFind,&FindFileData))
    {
    v_DllArray.Add(FindFileData.cFileName);
    MessageBoxA(0,FindFileData.cFileName,"loopAdded",0);
    }
    }
    
    MessageBoxA(0,"no more files",0,1);
    return true;
    }
    

    MessageBoxA(0,FindFileData.cFileName,"startAdded",0);
    MessageBoxA(0,FindFileData.cFileName,"loopAdded",0);

    hab ich nur geaddet, damit ich weiß ob und wann eine dll hinzugefügt wird.
    klappt soweit alles gut, wenn ich z.b.
    dllname1.dll
    dllname2.dll
    dllname3.dll
    im ordner hab, werden alle richtig erkannt und geMessageBox'd.

    in meiner zweiten funktion versuche ich den array nach eintragen zu durchsuchen:

    VOID PrintDlls()
    {
    	FindDLLsInCurrentDirectory();
    	for (int i=0; i < v_DllArray.GetSize() ; i++)
    	{
    		MessageBoxA(0,v_DllArray[i],0,0);
    	}
    }
    

    der output hiervon sieht jedoch so aus, dass die messagebox immer die erste .dll sooft ausprinted, wie die anzahl aller dlls im ordner ist.

    wäre echt nett, wenn mir jemand helfen könnte 😉



  • kann zu , habs anders gelöst 😉



  • Hallo,

    ich habe genau dasselbe Problem, ich möchte eine Reihe von .ini Files einlesen und speichern. Könntest du mir verraten, wie du es anders gelöst hast?

    Gruß
    tsp


Anmelden zum Antworten