Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
c0nail
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 30
#1

Не могу понять почему не присваивает?( - C++

09.11.2012, 18:45. Просмотров 615. Ответов 14
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h> 
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <tchar.h>
#include <string.h>
using namespace std;
 
void FindFiles(TCHAR* pszPath, TCHAR* pszMask)
{
    TCHAR szFileName1[MAX_PATH];
    TCHAR szFileName2[MAX_PATH];
    WIN32_FIND_DATA fd;
    HANDLE hFind;
   
   
    wsprintf(szFileName1, _T("%s\\%s"), pszPath,pszMask);
  
 /* ПОЧЕМУ ФИНД не принимает значение?????((((*/   hFind = FindFirstFile(szFileName1, &fd);
    
   
    if (hFind == INVALID_HANDLE_VALUE) return;
    do
    {
             wsprintf(szFileName1, _T("%s\\%s"), pszPath, fd.cFileName);
             wprintf(szFileName1);
            
            
    /*          char  * Name = new char [sizeof(szFileName) / sizeof(char)];
                WideCharToMultiByte(CP_ACP, 0,  szFileName, -1, Name, strlen(Name), NULL, NULL);
                
                char  * type = new char [sizeof(pszMask) / sizeof(char)];
                WideCharToMultiByte(CP_ACP, 0,  pszMask, -1, type, strlen(type), NULL, NULL);
 
 
 
            if(!strcmp(type,"*.doc"))
                {
                    char * B;
                    B=strstr(Name, ".doc");
                        if(!B==0 )
                           {
                              strcat(Name,"/");
                              printf("%s\n",Name);}
               }
                
                if(!strcmp(type,"*"))
                {printf("%s\n",Name);} */
                    
                
        
                
    } while(FindNextFile(hFind, &fd));
    FindClose(hFind);
     
    wsprintf(szFileName2, _T("%s\\%s"), pszPath,_T("*"));
    hFind = FindFirstFile(szFileName2, &fd);
     
    if (hFind == INVALID_HANDLE_VALUE) return;
    do
    {
        if(!lstrcmp(fd.cFileName, _T("."))|| !lstrcmp(fd.cFileName, _T(".."))) continue;
        if(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY )
        {
            wsprintf(szFileName1, _T("%s\\%s"), pszPath, fd.cFileName);
             FindFiles(szFileName1, pszMask);
        }
    } while(FindNextFile(hFind, &fd));
    FindClose(hFind);
}
 
 
 
 
int main()
{ 
    
    FindFiles(_T("c:\Intel"),_T("*.doc"));
//  if(!strcmp(argv,"all"))
//  {
//      FindFiles(pszPath,_T("*.*"));}
    getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
09.11.2012, 18:53     Не могу понять почему не присваивает?( #2
что значит не принимает? он принимает INVALID_HANDLE_VALUE или что?
c0nail
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 30
09.11.2012, 18:57  [ТС]     Не могу понять почему не присваивает?( #3
hFind = FindFirstFile(szFileName1, &fd); - если папка с файлами, он все равно остается пустым
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
09.11.2012, 19:00     Не могу понять почему не присваивает?( #4
кто остаётся пустым? структура fd заполняется или нет? Ты же в неё смотришь, верно?
c0nail
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 30
09.11.2012, 23:01  [ТС]     Не могу понять почему не присваивает?( #5
когда я по шагу смотрю то fd заполнен, а вот в hHind нечего не передается.....

Добавлено через 2 часа 0 минут
я надеялся мне ответят быстро((((((((

Добавлено через 1 час 58 минут
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
09.11.2012, 23:26     Не могу понять почему не присваивает?( #6
Цитата Сообщение от c0nail Посмотреть сообщение
когда я по шагу смотрю то fd заполнен, а вот в hHind нечего не передается.....
что значит не принимает значение? не нашел файл - вернул INVALID_HANDLE_VALUE.
c0nail
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 30
10.11.2012, 00:35  [ТС]     Не могу понять почему не присваивает?( #7
если б папка была пустая......
Не могу понять почему не присваивает?(
&fd как видишь, содержит информацию о файле, а вот в hFind она не передается....

P.S. Надеюсь нормально обьяснил
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
10.11.2012, 00:59     Не могу понять почему не присваивает?( #8
c0nail, он вам и вернул INVALID_HANDLE_VALUE.
А в fd никакой инфы нет. Если вы будете более внимательны, то увидите, что она содержит мусор, который как был до вызова FindFirstFile, так там и остался
c0nail
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 30
10.11.2012, 14:10  [ТС]     Не могу понять почему не присваивает?( #9
ммм да , вы правы извиняюсь(((( факт остается фактом, почему оно не работает?((((

p.s. у меня этот код работал, но я где то что то помоиму поменял и теперь не знаю в чем проблема(

Добавлено через 13 часов 2 минуты
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
10.11.2012, 14:30     Не могу понять почему не присваивает?( #10
C++
1
FindFiles(_T("c:\Intel"),_T("*.doc"));
поменяйте на
C++
1
FindFiles(_T("c:\\Intel"),_T("*.doc"));
Добавлено через 2 минуты
Цитата Сообщение от c0nail Посмотреть сообщение
если б папка была пустая......
а Вы не видите, какой текст содержится в szFileName1?
Там же написано c:Intel\*.doc
c0nail
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 30
10.11.2012, 15:02  [ТС]     Не могу понять почему не присваивает?( #11
Цитата Сообщение от Croessmah Посмотреть сообщение
FindFiles(_T("c:\\Intel"),_T("*.doc"));
так тоже самое(((
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
10.11.2012, 15:05     Не могу понять почему не присваивает?( #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h> 
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <tchar.h>
#include <string.h>
using namespace std;
 
void FindFiles(TCHAR* pszPath, TCHAR* pszMask)
{
    TCHAR szFileName1[MAX_PATH];
    TCHAR szFileName2[MAX_PATH];
    WIN32_FIND_DATA fd;
    HANDLE hFind;
   
   
    wsprintf(szFileName1, _T("%s\\%s"), pszPath,pszMask);
  
 /* ПОЧЕМУ ФИНД не принимает значение?????((((*/   hFind = FindFirstFile(szFileName1, &fd);
    
   
    if (hFind == INVALID_HANDLE_VALUE) return;
    do
    {
             wsprintf(szFileName1, _T("%s\\%s"), pszPath, fd.cFileName);
             wprintf(szFileName1);
            
            
    /*          char  * Name = new char [sizeof(szFileName) / sizeof(char)];
                WideCharToMultiByte(CP_ACP, 0,  szFileName, -1, Name, strlen(Name), NULL, NULL);
                
                char  * type = new char [sizeof(pszMask) / sizeof(char)];
                WideCharToMultiByte(CP_ACP, 0,  pszMask, -1, type, strlen(type), NULL, NULL);
 
 
 
            if(!strcmp(type,"*.doc"))
                {
                    char * B;
                    B=strstr(Name, ".doc");
                        if(!B==0 )
                           {
                              strcat(Name,"/");
                              printf("%s\n",Name);}
               }
                
                if(!strcmp(type,"*"))
                {printf("%s\n",Name);} */
                    
                
        
                
    } while(FindNextFile(hFind, &fd));
    FindClose(hFind);
     
    wsprintf(szFileName2, _T("%s\\%s"), pszPath,_T("*"));
    hFind = FindFirstFile(szFileName2, &fd);
     
    if (hFind == INVALID_HANDLE_VALUE) return;
    do
    {
        if(!lstrcmp(fd.cFileName, _T("."))|| !lstrcmp(fd.cFileName, _T(".."))) continue;
        if(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY )
        {
            wsprintf(szFileName1, _T("%s\\%s"), pszPath, fd.cFileName);
             FindFiles(szFileName1, pszMask);
        }
    } while(FindNextFile(hFind, &fd));
    FindClose(hFind);
}
 
 
 
 
int main()
{
    
    FindFiles(_T("c:\\Intel"),_T("*.doc"));
//  if(!strcmp(argv,"all"))
//  {
//      FindFiles(pszPath,_T("*.*"));}
    getch();
}
Не могу понять почему не присваивает?(
c0nail
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 30
10.11.2012, 15:14  [ТС]     Не могу понять почему не присваивает?( #13
ой , это какой то внутрений лаг(((((( поменял просто FindFiles(_T("e:\\1"),_T("*.jpg")); и стало работать........


p.s Извиняюсь что зря трепал нервы(
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
10.11.2012, 15:16     Не могу понять почему не присваивает?( #14
Цитата Сообщение от c0nail Посмотреть сообщение
ммммм и что мне теперь делать((((
в смысле? =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2012, 15:18     Не могу понять почему не присваивает?(
Еще ссылки по теме:
Не могу понять почему не запускается C++
не могу понять, почему не вычисляет C++
не могу понять,почему не идет C++
Не могу понять почему не работает C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
c0nail
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 30
10.11.2012, 15:18  [ТС]     Не могу понять почему не присваивает?( #15
Всем спасибо, тему можно клоуз)
Yandex
Объявления
10.11.2012, 15:18     Не могу понять почему не присваивает?(
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru