Existence souboru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Existence souboru – C / C++ – Fórum – Programujte.comExistence souboru – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
BDS+3
Věrný člen
10. 11. 2013   #1
-
0
-

Zdravím vás lidi. Pro zjištění existence souboru používám tuto funkci:

bool File_ExistsA(LPCSTR FileName)
{
 HANDLE h = CreateFileA(FileName,
			GENERIC_READ,
			FILE_SHARE_READ,
			NULL,
			OPEN_EXISTING,
			NULL,
			0);

 bool result = (h==INVALID_HANDLE_VALUE) ? false : true;
 CloseHandle(h);

 return result;
}

pro běžné použití funguje dobře, ale tentokrát ji chci použít pro zjištění existence souboru ve sdílné složce v síti. 

Pokud je tato složka "online", není problém, ale pokud ne, trvá to strašně dlouho.

Potřeboval bych funkci, která, bude buďto pracovat rychleji, nebo u které, bude možnost akci přerušit, nebo se ukončí po časovém limitu a ohlásí "timeout". 

Nahlásit jako SPAM
IP: 85.71.83.–
W11 :)
Řešení
Radek Chalupa
~ Redaktor
+1
Super člen
10. 11. 2013   #2
-
0
-
Vyřešeno Nejlepší odpověď

#1 BDS
Můžeš zkusit funkci PathFileExist a pak ještě popř. ověřit pomocí PathIsDirectory že to není složka, ale obávám se že moc rychlejší to nebude, prostě systému asi chvíli trvá než "připojí" tu síťovou složku.

Ale můžeš tu funkci spustit ve vlastním vlákně a pomocí WaitForSingleObject čekat nějaký čas a až se fce vrátí zjistíš zda fce vrátila WAIT_TIMEOUT a tedy zda se vlákno provedlo "včas" a když ne tak ho ukončit zvenku.

Radek Chalupa 
- vývoj software na zakázku 
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC) 
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 89.177.51.–
BDS+3
Věrný člen
11. 11. 2013   #3
-
0
-

#2 Radek Chalupa
Díky za reakci.

V mém programu mám nastaveno "otevřít automaticky poslední soubor po spuštění". Ale někdy přímo tento poslední soubor uživatel nepotřebuje otevírat, proto by se mi líbilo mít k dispozici i tlačítko "zrušit načítání".

Ve vláknech se pořád trochu ztrácím mohl bych poprosit o ukázku jak to celé provést?

Našel jsem si např. tuto ukázku: http://www.codersource.net/2010/02/16/waitforsingleobject/ , ale nevím jak do toho zamotat ukončení toho vlákna.

Nahlásit jako SPAM
IP: 85.71.83.–
W11 :)
BDS+3
Věrný člen
12. 11. 2013   #4
-
0
-

Už jsem si s tím nějak poradil, zkrátka to ukončím pomocí TerminateThread, ale rozchodil jsem to i s tím intervalem, pomocí  WaitForSingleObject. Zprvu mi to nechtělo chodit s tím "Eventem" jako parametr WaitForSingleObject, jako parametr jsem dal přímo to vlákno a vypadá to to, že to bude chodit.
 

Nahlásit jako SPAM
IP: 85.71.83.–
W11 :)
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, 48 hostů

Podobná vlákna

Existence souboru — založil Tomik

Existence URL — založil pawlik

DOM - existence tagu? — založil pawlik

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ý