Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2013, 12:55   #1
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
Печаль С++ path

Уважаемые знатоки. Вообщем перелазил весь интернет, но не смог открыть для себя истину: У меня есть FindFirstFile - в нём я указываю путь, на тестовой папке все замечательно работало, но как только я поменял путь(а тут уже кириллица есть), то чудесным образом мой путь (а точнее слово "Администратор") превращается в какой-то мусор. Вообщем я видел что можно скачать доп. библиотеки и через boot все поправляется. Но я хотел бы справиться стандартными средствами.
P.S. setlocale и т.п. не помогает. Так как же мне быть ? Путь менять нельзя ! слово "Администратор" обязательно.
Не забываем про весы.
KooKish вне форума Ответить с цитированием
Старый 03.03.2013, 15:00   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Юникод включен?
Как определили, что в возвращаемых значениях кракозябры? Где код?
Может у вас проблемы с выводом на экран?
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 03.03.2013, 16:24   #3
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

Вообщем, поменять путь на C:\\test\\, то все работает, но мне нужно удалять файлы именно из папки Downloads. Но речь не об этом, а о пути и русских символах.
Код:
#include <conio.h>
#include <iostream>
#include <Windows.h>

using namespace std;

int main(){

	setlocale(LC_ALL, "Russian");

	WIN32_FIND_DATA f;

	HANDLE hFile = FindFirstFileW(L"C:\\Users\\Администратор\\Downloads\\*.*", &f);
	FindNextFileW(hFile,&f);
	FindNextFileW(hFile,&f);

	if( hFile != INVALID_HANDLE_VALUE )
		do{
			char ftmp[260];
			char tmp[260] = "C:\\Users\\Администратор\\Downloads\\";
			char DefChar = ' ';
			WideCharToMultiByte(1251,0,f.cFileName,-1, ftmp,260,&DefChar, NULL);
			for(int i=0;i<260;i++)
				tmp[i+8] = ftmp[i];
			cout << tmp << endl;
			WCHAR fDelete[260];
			MultiByteToWideChar(1251,0,tmp,-1,fDelete,260);
			BOOL flag = DeleteFileW(fDelete);
			if( flag == true )
				cout << "Файл удалён." << endl; 
			else cout << "Файл не был удалён." << endl;;
		}while(FindNextFileW(hFile,&f));
	FindClose(hFile);
	getch();
}
Не забываем про весы.
KooKish вне форума Ответить с цитированием
Старый 04.03.2013, 03:17   #4
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Объясните, зачем гонять из юникода в чар, в мультибайт и обратно?
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 04.03.2013, 09:32   #5
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

Что бы удалить файл, нужен путь, а FindFirstFile возвращает только имя сего файла -> нужно к нему приписать путь, чем я там и занимался А что касается русских букв в пути, не подскажешь вариантов ?
Не забываем про весы.
KooKish вне форума Ответить с цитированием
Старый 04.03.2013, 09:48   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Чтото у вас строка "C:\\Users\\Администратор\\Download s\\" один раз уникодная, один раз нет. Что мешает сделать ее всегда UNICODE?
waleri вне форума Ответить с цитированием
Старый 04.03.2013, 10:19   #7
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

Тогда как мне совместить путь и имя файла вместе ? Я не понимаю вас. Можно на пальцах. Пример кода.
Не забываем про весы.
KooKish вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формат *.path meganet Софт 7 16.01.2013 11:12
XE2 Library Path Хамяг Общие вопросы Delphi 2 26.10.2011 17:36
Переменная окружения PATH Nostalgia Общие вопросы C/C++ 2 17.10.2010 20:11
Path not found igor_564 Паскаль, Turbo Pascal, PascalABC.NET 3 05.12.2009 21:24
error setting path Toxa Общие вопросы Delphi 2 12.09.2007 21:35