Rename() problem – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Rename() problem – C / C++ – Fórum – Programujte.comRename() problem – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
zafan
~ Anonymní uživatel
4 příspěvky
16. 4. 2016   #1
-
0
-

Omlouvám se, jestli se to tu už náhodou vykytlou, ale už dlouho hledám po internetu na nemohu přijít na záludnost, týká se to hromadného přejmenování a mazání souborů.

for(int i = 0; i < 194; ++i)
	{
		for(int j = 0; j < sizeof(del)/sizeof(del[0]); ++j)
		{
			if(names[i] == del[j])
			{
				remove((path.str() + cz_prefix + del[j] + pdf).c_str());
				remove((path.str() + en_prefix + del[j] + pdf).c_str());
				remove((path.str() + ru_prefix + del[j] + pdf).c_str());
				cout << ".";
				continue;
			}
		}
		MoveFile((path.str() + cz_prefix + to_string(i+1) + pdf).c_str(), (path.str() + cz + names[i] + pdf).c_str());
		MoveFile((path.str() + en_prefix + to_string(i+1) + pdf).c_str(), (path.str() + en + names[i] + pdf).c_str());
		MoveFile((path.str() + ru_prefix + to_string(i+1) + pdf).c_str(), (path.str() + ru + names[i] + pdf).c_str());
		cout << "*";
	}

remove funguje normálně, ale MoveFile/rename mají úplně stejná chování a to, že když dojde na rename, tak se vykoná jen
MoveFile((path.str() + cz_prefix + to_string(i+1) + pdf).c_str(), (path.str() + cz + names[i] + pdf).c_str());
a zbytek jakoby tam nebyl, zkoušel jsem to jak bez cesty, tak i s cestou k souboru a nefunguje to, včetně toho, že bych pro jednotlivé lokalizace cyklus rozdelil, výsledek je vždy stejný...

Moc děkuji za pomoc.

Nahlásit jako SPAM
IP: 213.168.191.–
Reklama
Reklama
BDS+2
Věrný člen
16. 4. 2016   #2
-
0
-

#1 zafan
Když pominu příčiny zabraňující možnosti měnit soubor, tak zbývá jen nesprávně zadaná ta nebo ta cesta k souboru.

Nahlásit jako SPAM
IP: 185.69.69.–
Visual Studio C/C#/C++
(pouze samouk)
zafan
~ Anonymní uživatel
4 příspěvky
16. 4. 2016   #3
-
0
-

Cesta pochází z  téhle funkce:

GetCurrentDirectory(BUFSIZE, Buffer);

cestu vrací správně (kontroloval jsem, také mě to napadlo), takže tam bych problém neviděl. Vlastně je jedno jestli zadám cestu nebo ne, chová se to stále stejně, ale děkuji.

Nahlásit jako SPAM
IP: 213.168.191.–
BDS+2
Věrný člen
16. 4. 2016   #4
-
0
-

#3 zafan
tak si vypiš GetLastError.

ps, lomítko tam přidané máš?

Nahlásit jako SPAM
IP: 185.69.69.–
Visual Studio C/C#/C++
(pouze samouk)
zafan
~ Anonymní uživatel
4 příspěvky
16. 4. 2016   #5
-
0
-

Lomítko tam mám, to by nefungoval MoveFile ani pro CZ, který funguje normálně, jen ty dva po něm nefungují. Zkusila jsem GetLastError() a ten mi řekl 2, což by podle chytrého webu mělo znamenat, že soubor neexistuje.
Ale zvláštní je, že to vyskočilo jen jednou a to až na konci, neskákalo to při každé iteraci. Proměnné mám správně nastavené a i kdyby ne, tak ty soubory se generují podle pojmenování proměnných. tzn. vytvoří se soubor pdf s označením z proměnných -> smažou se ty, které tam být nemají -> přejmenují se, ty které by měly

Nahlásit jako SPAM
IP: 213.168.191.–
BDS+2
Věrný člen
16. 4. 2016   #6
-
0
-

#5 zafan

vypisuj si jednotlivé cesty a uvidíš jestli jsou v pořádku. Podle chyby 2 určitě nejsou. 

Nahlásit jako SPAM
IP: 185.69.69.–
Visual Studio C/C#/C++
(pouze samouk)
zafan
~ Anonymní uživatel
4 příspěvky
16. 4. 2016   #7
-
0
-

Vyřešeno, chyba byla ještě odjinud, špatné kódování zdrojového souboru.
Každopádně moc děkuji za pomoc.

Nahlásit jako SPAM
IP: 213.168.191.–
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, 83 hostů

Podobná vlákna

Problém — založil Trumpetka

Problém — založil Ma.ty

Problem s VS C# — založil Mrakoplas

Problém s VC++ — založil beb

Moderátoři diskuze

 

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