Alle Nicht-Belegten Laufwerke auflisten



  • Hi,

    ich möchte unter Windows alle nicht belegten Laufwerke auflisten.
    Ich arbeite mit einer wxWidgets Combobox (cb_laufwerk).

    this->cb_laufwerk->Clear();
    
    DWORD drives = GetLogicalDrives();
    
    for (std::list<char>::iterator ii=this->AlleLaufwerke.begin();ii != this->AlleLaufwerke.end();++ii)
    {
    	if (drives & (DWORD)*ii)
    	{
    	}
    	else 
    	{
    		this->cb_laufwerk->Append(wxString(*ii) + ":");
    	}
    }
    

    AlleLaufwerke ist dabei eine Char-List A - Z.

    Ich bekomme aber nur "A:", "B:" und "C:" ausgegeben.

    Wo liegt mein Fehler?

    Gruß



  • Hi,

    hab den Fehler grad doch noch gefunden, hab mir die Doku zur Rückgabe von GetLogicalDrives() nicht richtig durchgelesen 😉

    Hier der Richtige Code:

    this->cb_laufwerk->Clear();
    
    DWORD drives = GetLogicalDrives();
    
    DWORD j = 1;
    for (std::list<char>::iterator ii=this->AlleLaufwerke.begin();ii != this->AlleLaufwerke.end();++ii)
    {
    	if (drives & j)
    	{
    	}
    	else 
    	{
    		this->cb_laufwerk->Append(wxString(*ii) + ":");
    	}
    	j *= 2;
    }
    

    Gruß



  • Standard-C++ kennt keine Laufwerke, damit warst du schonmal im falschen Forum. Nächstemal bitte erst die mit wichtig gekennzeichneten Threads durchlesen und dann posten...



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ (auch C++0x) 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.



  • Nur eine Randfrage: Ist es denn wirklich nötig, die Laufwerksbuchstaben in einer list<> vorrätig zu halten? Ich würde eher direkt über den Zeichenbereich iterieren:

    char c;int j;
    for( c='A',j=1 ; c<='Z' ; ++c,j<<=1 )
    {
        if (!(drives & j))
        {
            this->cb_laufwerk->Append(wxString(c) + ":");
        }
    }
    

Anmelden zum Antworten