Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Ordner aus einem Ordner auslesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.12.2002, 16:26 Uhr
docreggae



Hi

Was ist hierdran falsch?

void CSeite3::ListUsers()
{
CString Path, User;
CFileFind ff;
UserDir(Path);
Path = Path + "\\Mozilla\\Profiles";
BOOL cont = ff.FindFile(Path + "\\*");

while(cont)
{
cont = ff.FindNextFile();

if(ff.IsDirectory())
{
User = ff.GetFilePath();
m_ctrlUsers.AddString(User);
}

}
ff.Close();
}

Dieser Post wurde am 10.12.2002 um 16:29 Uhr von docreggae editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.12.2002, 16:39 Uhr
Tommix



Hallo,

Zitat:

Was ist hierdran falsch?


eigentlich gar nichts. Was macht "UserDir"? Path darf keinen abschließenden Backslash haben!

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.12.2002, 17:05 Uhr
docreggae



UserDir liest 'nen Strign aus der Registry.

CString CSeite3::UserDir(CString &Path)
{
CString strCookies;
CRegKey key;
char buffer[256];
DWORD dwCount = sizeof( buffer);
key.Open( HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", KEY_READ);
key.QueryValue( buffer, "AppData", &dwCount);
key.Close();
Path = buffer;
return Path;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.12.2002, 17:35 Uhr
Tommix



Und was geht dann nicht? Habs mal so modifiziert (hab hier nur Netscape 4):

C++:
#include "stdafx.h"
#include <atlbase.h>

CString UserDir(CString& Path)
{
    CString strCookies;
    CRegKey key;
    char buffer[256];
    DWORD dwCount = sizeof( buffer);
    key.Open( HKEY_CURRENT_USER,
        "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", KEY_READ);
    key.QueryValue( buffer, "AppData", &dwCount);
    key.Close();
    
    Path = buffer;
    return Path;
}

int main()
{
    
    CString Path;
    CString User;

    CFileFind ff;
    
    UserDir(Path);
    Path = Path + "\\Microsoft";  // mozilla nix hier :(
    BOOL cont = ff.FindFile(Path + "\\*");    

    while(cont)
    {
        cont = ff.FindNextFile();
        
        if(ff.IsDirectory())
        {
            User = ff.GetFilePath();
            TRACE("%s\n", User);
        }
        
    }
    ff.Close();
    
    return 0;
}


Gibt aus:
C:\WINDOWS\Anwendungsdaten\Microsoft\.
C:\WINDOWS\Anwendungsdaten\Microsoft\..
C:\WINDOWS\Anwendungsdaten\Microsoft\WELCOME
C:\WINDOWS\Anwendungsdaten\Microsoft\Internet Explorer
C:\WINDOWS\Anwendungsdaten\Microsoft\Office
C:\WINDOWS\Anwendungsdaten\Microsoft\Installer
C:\WINDOWS\Anwendungsdaten\Microsoft\MSE
C:\WINDOWS\Anwendungsdaten\Microsoft\Proof
C:\WINDOWS\Anwendungsdaten\Microsoft\Vorlagen
C:\WINDOWS\Anwendungsdaten\Microsoft\Word
C:\WINDOWS\Anwendungsdaten\Microsoft\AddIns
C:\WINDOWS\Anwendungsdaten\Microsoft\HTML Help
C:\WINDOWS\Anwendungsdaten\Microsoft\Media Player
C:\WINDOWS\Anwendungsdaten\Microsoft\Media Catalog

- Tommix

Dieser Post wurde am 10.12.2002 um 17:37 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.12.2002, 20:46 Uhr
docreggae



Ich dachte fast, das ist die Lösung, denn mit MessageBox hat die Ausgabe auch geklappt. Dann habe ich diese mit m_ctrlUser.AddString(User) ersetzt und sofort schmiert das Programm wieder ab. Das Problem sind, glaube ich, die ersten zwei Ausgaben. Was ist dass??? Das kommt bei allen Ordnern und ich habe keine Ahnnung, was das sein soll. Hat jemand von euch eine Idee?
Dieser Post wurde am 10.12.2002 um 21:22 Uhr von docreggae editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.12.2002, 21:58 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
hab das jetzt mal mit Deinem Quellcode nachgebaut, aber mit

C++:
Path = Path + "\\Microsoft";
anstatt:

Zitat:
Path = Path + "\\Mozilla\\Profiles";


Wie Tommix schon berichtet: Es funktioniert tadellos!
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 10.12.2002 um 21:59 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.12.2002, 07:31 Uhr
Tommix



Hallo,

Zitat:

die ersten zwei Ausgaben. Was ist dass???


"." ist das aktuelle und ".." das übergeordnete Verzeichnis. Die kannst Du rausfiltern mit

C++:
if ((ff.IsDirectory()) && (!ff.IsDots()))
  ...


AddString geht erst, wenn das Fenster aufgebaut ist (also z.B. nicht im Konstruktor). Setz mal ein

C++:
ASSERT(m_hWnd != NULL)


davor.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: