Vyhledávání souborů a složek na disku – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vyhledávání souborů a složek na disku – C / C++ – Fórum – Programujte.comVyhledávání souborů a složek na disku – C / C++ – Fórum – Programujte.com

 

Martin h.
~ Anonymní uživatel
4 příspěvky
3. 12. 2011   #1
-
0
-

Ahoj. 

Snažím se udělat ve Visual studiu v c++ pomocí win api, consolovou aplikaci - vyhledávání souborů a složek na disku. Ale nemohu přijít na to, jak vůbec všechny soubory najít a vypsat je.

vyplodil jsem zatím tohle:

int _tmain(int argc, _TCHAR* argv[])
{

  WIN32_FIND_DATA fd;
  HANDLE hFind; 
LPCTSTR cesta =(LPCTSTR) "l:\\";

hFind = FindFirstFile(cesta , &fd);
if(hFind == INVALID_HANDLE_VALUE){
  cout << "neni handle";
}

else{
  while(1) {

   if(FindNextFile(hFind, &fd) == 0){
    cout << "další soubor není";
    break; // další soubor?
   }

   cout << "a";
  }


}


system("pause");

}

bohužel stále dostávám invalid handle. Problém bude nejspíše v zadávání cesty?  Chce to po mě nějaký datový typ LPCSTR. Nevím jak ho udělat LPCTSTR cesta =(LPCTSTR) "l:\\"; tohle to asi nefunguje? Nebo je problém někde jinde?

Díky za případnou pomoc. 

Nahlásit jako SPAM
IP: 78.108.154.–
yaqwsx+9
Posthunter
3. 12. 2011   #2
-
0
-

Nějak podrobně jsme nestudoval, ale nahradil bych LPCTSTR cesta =(LPCTSTR) "l:\\"; něčím takovým: LPCTSTR cesta = TEXT("l:\\"); Tím ošetříš UNICODE.

Nahlásit jako SPAM
IP: 85.160.101.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
martin h.
~ Anonymní uživatel
4 příspěvky
3. 12. 2011   #3
-
0
-

bohužel... nepomohlo.

Nahlásit jako SPAM
IP: 78.108.154.–
liborb
~ Redaktor
+18
Guru
3. 12. 2011   #4
-
0
-

TCHAR makro na řetězce je _T("řetězec"). Nejspíš máš zapnutý Unicode, takže můžeš rovnou používat L"řetězec", ale předchozí makro je samozřejmě univerzální, takže ti bude fungovat i pro ansi.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.209.–
yaqwsx+9
Posthunter
3. 12. 2011   #5
-
0
-

Co dostáváš za chybový kód té funkce? (zjistíš pomocí zavolání GetLastError())

Nahlásit jako SPAM
IP: 85.160.101.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
martin h.
~ Anonymní uživatel
4 příspěvky
3. 12. 2011   #6
-
0
-

Háže to dvojku

Nahlásit jako SPAM
IP: 78.108.154.–
martin h.
~ Anonymní uživatel
4 příspěvky
3. 12. 2011   #7
-
0
-

joooo. Díky za pomoc. Když už jsem znal kód chyby (proč mě to jen nenapadlo...) tak už jsem našel řešení.

handlu jsem přidal následující: 

hFind = CreateFile(cesta,
GENERIC_READ, // open for reading
FILE_SHARE_READ, // share for reading
NULL, // no security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL);

Nahlásit jako SPAM
IP: 78.108.154.–
zlz
~ Anonymní uživatel
634 příspěvků
3. 12. 2011   #8
-
0
-

A to řešení je to CreateFile? To snad ne  

LPCTSTR cesta = TEXT("l:\\*");
hFind = FindFirstFile(cesta, &fd);
if (hFind != INVALID_HANDLE_VALUE)
{
    do
    {
        wcout << fd.cFileName << endl;
    }
    while (FindNextFile(hFind, &fd));
    FindClose(hFind);
}
Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 37 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý