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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2011, 19:42   #1
Tema_Crazzzy
Форумчанин
 
Регистрация: 29.04.2010
Сообщений: 114
Счастье Поиск файлов в Windows

Имеется "сырая программа" которая должна искать файлы по заданной маске в каталогах и подкаталогах. Вот код:
Код:
#include <iostream>
#include <windows.h>
#include <string.h>
#include <stdlib.h>

using namespace std;

void FileSearch(const TCHAR *path){
	WIN32_FIND_DATA File;
	HANDLE hFile;
	
	TCHAR fPath[MAX_PATH],result[MAX_PATH];
	strcpy_s(fPath,MAX_PATH,path); 
	strcat_s(fPath,MAX_PATH,"\\*");
	
	hFile=FindFirstFile(fPath,&File);
	if(hFile!=INVALID_HANDLE_VALUE){
		do{
			if (File.cFileName[0]!='.') try{
				strcpy_s(fPath,MAX_PATH,path);
				strcat_s(fPath,MAX_PATH,"\\");
				strcat_s(fPath,MAX_PATH,File.cFileName);
				
				CharToOem(fPath,result);
				
				if(File.dwFileAttributes!=FILE_ATTRIBUTE_DIRECTORY){
					//Подпрограмма
					cout<<File.cFileName<<endl;
				}
				
				if (File.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
					FileSearch(fPath);
			}
			
			catch (...){
				cout<<"Не могу отобразить имя\n";
			}
		}while(FindNextFile(hFile,&File));
	}
}

int _tmain(int argc, _TCHAR* argv[]){
	FileSearch("C:\\");
}
Однако VS2008 ругается на strcpy_s(fPath,MAX_PATH,path); Говорит что не может преобразовать 1 параметр. Но этот кусок кода на самом деле рабочий (стырил из примера к лабе). Подскажите что делать и (кто виноват) куда копать?

Заранее спасибо))
Tema_Crazzzy вне форума Ответить с цитированием
Старый 06.02.2011, 19:53   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

А какие слова употребляет при ругани ?
Мне кажется, что нужно бы использовать функи, которые работают с юникодом, т.е. wcscpy_s и т.д.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 06.02.2011 в 20:02.
Goodwin98 вне форума Ответить с цитированием
Старый 06.02.2011, 20:26   #3
Tema_Crazzzy
Форумчанин
 
Регистрация: 29.04.2010
Сообщений: 114
По умолчанию

c:\users\anton\documents\visual studio 2008\projects\project56\project56\p roject56.cpp(18) : error C2664: 'errno_t strcpy_s(char *,rsize_t,const char *)' : cannot convert parameter 1 from 'TCHAR [260]' to 'char *'

Вот так он умеет материться))
Tema_Crazzzy вне форума Ответить с цитированием
Старый 06.02.2011, 20:36   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Ну как я и написал, попробуйте использовать wcscpy_s
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 06.02.2011, 20:37   #5
Tema_Crazzzy
Форумчанин
 
Регистрация: 29.04.2010
Сообщений: 114
По умолчанию

Помогло. Огромное спасибо!
Tema_Crazzzy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие файлов в Windows bakabul Операционные системы общие вопросы 13 22.09.2020 17:03
Создание командных файлов Windows sanchez Помощь студентам 0 18.05.2010 09:44
Выделение файлов Windows Explorer Gerzs Общие вопросы Delphi 11 12.10.2009 16:51
Поиск файлов Romms Общие вопросы Delphi 3 27.09.2009 00:40
Поиск файлов student_63 Общие вопросы Delphi 6 07.03.2008 19:00