Zweimal die selbe Datei

Thopeto

Erfahrenes Mitglied
Hallo

Situation: Zwei verschiedene *.plx Dateien befinden sich in einem Ordner
Der Fehler: Er gibt 2 mal die gleiche Datei aus.

Quellcode:
Code:
BOOL CDlgModule::OnInitModule()
  {
  	char filepath[MAX_PATH];
  
  	GetModuleFileName(AfxGetApp()->m_hInstance,filepath, MAX_PATH-1); 
  	SetCurrentDirectory(CPfad::GetAppPfad() + "Module\\");
  	CFileFind finder;
  	CString strWildCard = _T("*.plx"); 
  
  	BOOL bWorking = finder.FindFile(strWildCard); 
  	while (bWorking)
  	{
  		bWorking = finder.FindNextFile(); 
  		if (finder.IsDots() || finder.IsDirectory())
  			continue;
  
  		HMODULE hm = AfxLoadLibrary(finder.GetFilePath());
 		AfxMessageBox("Module geladen:" + finder.GetFilePath()); // Hier ist die Ausgabe
    
  		if(!hm)
  		{
 		 AfxMessageBox("Fehler: Kann folgendes Modul nicht korrekt laden: " + finder.GetFilePath());
  		
  		} 
  		else
  		{ // Geladen
  			m_dwa.Add((DWORD)hm);
  
 			PLX_Init Modul = m_ModuleManager.GetModulInfo(m_dwa.GetAt(finder.FindNextFile()));
 			OnInsertItem(Modul.strName,Modul.strDescription,Modul.strCopyright);
  		}
  
  	}
  
  	return TRUE;
  }

Beispiel: Normalerweise müsste er das ausgeben: "eins.plx" "zwei.plx"
aber er gibt folgendes aus: "eins.plx" "eins.plx"
 
Moin moin,
die FindNextFile Funktion am Ende bringt die Sache ins wanken.
wenn nur zwei Dateien in deinem Verzeichnis sind, dann ist mit start des zweiten Durchlaufs der Funktions aufruf nicht mehr gültig siehe MSDN.

Rückgabe Wert ist übrigens 0 oder irgendwas und vermutlich nicht was was man mit GetAt(...) nutzen kann.

Gruss Michael
 
Hat er ja auch net:-)
aber wenn alles richtig läuft, dann

Initialisierst -> finder.FindFile(strWildCard)
startest den Schleifen Suchlauf -> while (bWorking)
suchst den ersten Eintrag -> bWorking = finder.FindNextFile();
suchst den zweiten Eintrag -> PLX_Init Modul = m_ModuleManager.GetModulInfo(m_dwa.GetAt(finder.FindNextFile())); -> FEHLER GetAt will bestimmt kein BOOL haben
gehst in die nächste Schleifen runde -> while (bWorking)
und hast einen Fehler beim DRITTEN zugriff auf finder.FindNextFile()
 
oh man.......wie schwach ist das?! warum hab ich das nicht gleich bemerkt *mit kopf auf tastatur hau*

Wenn Dummheit schnell wäre, müsste ich einen Berg hinauf bremsen.

gott tut das weh

Habt vielen dank für eure Hilfe. Besonderen Dank geht an CodeFatal der durch seine super Analyse mir weitergeholfen hat. :-(
 
Zurück