Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Подскажите где можно начитаться? =)  (Прочитано 17009 раз)
0 Пользователей и 1 Гость смотрят эту тему.
F1aSh
Гость
« : 07-05-2005 07:40 » 

Где почитать про работу с файлами и папками...
Мне например надо найти все файлики с расширением .files (папочки где рисунки сохраненных страницек хранятся) и сделать их все невидимыми в той папке где хранится exe-шник проги...
в общем, нужно побольше почитать про это...
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 07-05-2005 08:02 » 

Читай MSDN. Функции WinAPI FindFirstFile, FindNextFile,  FindClose помогут тебе в поиске файлов и папок. Функции GetFileAttributes, SetFileAttributes помогут тебе в установке атрибутов файла.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
F1aSh
Гость
« Ответ #2 : 07-05-2005 08:38 » 

Спасибо, ато на rsdn'е мне вапче ниче не ответили =)
« Последнее редактирование: 20-12-2007 21:12 от Алексей1153++ » Записан
F1aSh
Гость
« Ответ #3 : 08-05-2005 04:41 » 

хм...
   LPWIN32_FIND_DATAA h;
   
   if (FindFirstFile("fff.files", h) == S_OK )
      cout << "ok" << endl;
   else
      cout << "no" << endl;

ашыпка.... Извините злобньго ламерюгу....
Но я не знаю как использовать структуру в кач. парамерта ф-ии... Вообще не представляю что это такое =((
"lpFindFileData
[out] Pointer to the WIN32_FIND_DATA structure that receives information about the found file or subdirectory.
"

Че значт out ? =)
Записан
LP
Помогающий

ru
Offline Offline

« Ответ #4 : 08-05-2005 10:15 » 

[out] значит что это результат работы функции.
А что значит
Цитата
сделать их все невидимыми в той папке где хранится exe-шник проги
Скрытыми что-ли??
Записан

Если эта надпись уменьшается, значит ваш монитор уносят
F1aSh
Гость
« Ответ #5 : 08-05-2005 10:52 » 

Ага. Скрытыми
Не... ну скрытыми то я сделаю сам.... SetAttribute и нашел я константы эти, чтобы скрытыми сделать на allapi.net (иил com - не помню)
Мне бы ответ получить на пост, который 4й тут =)
Записан
LP
Помогающий

ru
Offline Offline

« Ответ #6 : 08-05-2005 11:05 » 

Цитата
LPWIN32_FIND_DATAA h;
   
   if (FindFirstFile("fff.files", h) == S_OK )//?Не понялНе понял
      cout << "ok" << endl;
   else
      cout << "no" << endl;

FindFirstFile возвращает handle файла в случае успешного завершения, и INVALID_HANDLE_VALUE (т. е. -1) в случае ошибки.
Кроме того твой указатель h ни на что не указывает
Записан

Если эта надпись уменьшается, значит ваш монитор уносят
F1aSh
Гость
« Ответ #7 : 08-05-2005 11:36 » 

А на что он ДОЛЖЕН указвать?
И чтоза тип такой LPWIN32_FIND_DATAA  ? Там вопрос чуть чуть пошире =) Объясните пожалуйста, если не в лом... и я не буду с такими глупыми вопросами больше приставать =))))

PS Рульз =)
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #8 : 08-05-2005 12:10 » 

Вот пример, который привели, когда разбирали тоже самое тут https://forum.shelek.ru/index.php/topic,4017.30.html
Код:
HANDLE     hFndF=FindFirstFile("c:\\*.*", &FindFile);
DWORD     Folder;
if (hFndF!=INVALID_HANDLE_VALUE)
         {   
           do    {
                Folder=FindFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;             
                if (!Folder) Memo1->Lines->Add(FindFile.cFileName );
           }  while (FindNextFile(hFndF,&FindFile)!=0);
           FindClose(hFndF);
         }
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
F1aSh
Гость
« Ответ #9 : 08-05-2005 12:18 » 

Спасибо. Буду разбираться! =)
Записан
LP
Помогающий

ru
Offline Offline

« Ответ #10 : 08-05-2005 13:59 » 

Попробовал написать твою программку, у меня вроде работает,
хотя не исключено что где-нибудь что-нибудь напутал  Улыбаюсь

Код:
#include <windows.h>
#include <conio.h>
#include <shlwapi.h>
#include <iostream>

using namespace std;

void copy_and_hide(LPCTSTR lpPath, LPCTSTR lpFileName);

int main()
{   
TCHAR path[]="d:\\fff.files\\";
TCHAR anyfile[]="d:\\fff.files\\*.*";
WIN32_FIND_DATA w32fd;
LPWIN32_FIND_DATA lpw32fd=&w32fd;
HANDLE h = FindFirstFile(anyfile, lpw32fd);
if(h==INVALID_HANDLE_VALUE)
{
cout<<"error";
return -1;
}
if(!(lpw32fd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
copy_and_hide(path, lpw32fd->cFileName);
while(FindNextFile(h, lpw32fd))
{
if(!(lpw32fd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
copy_and_hide(path, lpw32fd->cFileName);

}

FindClose(h);
getch();
return 0;
}

void copy_and_hide(LPCTSTR lpPath, LPCTSTR lpFileName)
{

TCHAR buffer[MAX_PATH];
    GetCurrentDirectory(MAX_PATH, buffer);
StrCat(buffer, "\\");
TCHAR path[MAX_PATH];
StrCpy(path, lpPath);
CopyFile(StrCat(path, lpFileName), StrCat(buffer, lpFileName), FALSE);
DWORD attr=GetFileAttributes(buffer);
SetFileAttributes(buffer, attr | FILE_ATTRIBUTE_HIDDEN);
cout<<buffer<<" is copied"<<endl;
return;
}

« Последнее редактирование: 08-05-2005 14:04 от LP » Записан

Если эта надпись уменьшается, значит ваш монитор уносят
F1aSh
Гость
« Ответ #11 : 08-05-2005 14:39 » 

Ой спасиба! Огромное, просто! Мне очень пригодится... посидеть поразбираться...
Низкий поклон!
Записан
F1aSh
Гость
« Ответ #12 : 10-05-2005 08:08 » 

Ага.... все файлы скрывает... =) Я чуть не испугался Ага))
   TCHAR path[]="C:\\Documents and Settings\\User\\My Documents\\";
   TCHAR anyfile[]="C:\\Documents and Settings\\User\\My Documents\\*.files";

Мне нада папки скрыть на конче которых .files
там че? Что то другое использовать.... Если вот так в проге заменить path[] и anyfile[] то ниче копироваться и скрываться не будет. Вопрос - почему?
Записан
LP
Помогающий

ru
Offline Offline

« Ответ #13 : 10-05-2005 17:34 » 

Ага.... все файлы скрывает... =) Я чуть не испугался Ага))
   TCHAR path[]="C:\\Documents and Settings\\User\\My Documents\\";
   TCHAR anyfile[]="C:\\Documents and Settings\\User\\My Documents\\*.files";

Мне нада папки скрыть на конче которых .files
там че? Что то другое использовать.... Если вот так в проге заменить path[] и anyfile[] то ниче копироваться и скрываться не будет. Вопрос - почему?

Если так сделать то будут копироваться только файлы с расширением .files, а не папки.
С вопросом как копировать папки (тем более с файлами) тебе придется обратиться к msdn, так как я не знаю такой функции (если она вообще есть Улыбаюсь)
Но можно например создать новую, а туда подряд скопировать файлы из исходной папки.
Записан

Если эта надпись уменьшается, значит ваш монитор уносят
F1aSh
Гость
« Ответ #14 : 10-05-2005 20:50 » 

Хммм.... Но у папки то можно аттрибут "Скрытый" выставлять.... Значит можно и программно как-то выставить. Буду копаться Ага
Спасибо тебе за помощь...
Записан
F1aSh
Гость
« Ответ #15 : 11-05-2005 08:46 » new

FILE_ATTRIBUTE_NORMAL
   TCHAR path[]="C:\\Documents and Settings\\User\\My Documents\\";
   TCHAR anyfile[]="C:\\Documents and Settings\\User\\My Documents\\*.files";
скрываем все папочки с .files на конце
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines