Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Удаление файлов, из дериктории 
V
    Опции темы
TForumUser
Дата 16.7.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



Здравствуйте!
Такая задача: нужно очистить директорию от файлов и папок (причем файлы могут быть не тоьлко текстовые), если файл удалить нельзя (заблокирован дескриптором), он пропускается (естесственно). Помогите, плиз, решить эту задачу, ато temp задралось вручную чистить  smile 
PS да знаю я что это можно найти и на Гугле, и где хочешь - но все равно обращаюсь к вам: в конце концов мне этот форум Гугл и подсказал..
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
lukas
Дата 17.7.2007, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Код


uses ShellApi;

...
function DelDir(dir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_DELETE;
fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
pFrom := PChar(dir + #0);
end;
Result := (0 = ShFileOperation(fos));
end;


Это сообщение отредактировал(а) lukas - 17.7.2007, 07:07


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
TForumUser
Дата 17.7.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



lukas, благодарю!
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
arm11111
Дата 1.8.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 31.7.2009

Репутация: нет
Всего: нет



попробовал таким образом удалить document and setting  не получилось )) , а можно почистить эту папку ? то есть если файл необходим виндовсу (не удаляется) , то пропустить его а все остальное "рабочий стол , программы " то удалить ?

вот что то накопал , но не мне не нравится сообщение ShowMessage кто нить помогите , его убрать отсюда ..


Код

function MyRemoveDir(sDir : string) : Boolean;
var
  iIndex: Integer;
  SearchRec: TSearchRec;
  sFileName: string;
begin
  Result := False;
  sDir := sDir + '\*.*';
  iIndex := FindFirst(sDir, faAnyFile, SearchRec);

  while iIndex = 0 do
  begin
    sFileName := ExtractFileDir(sDir)+'\'+SearchRec.name;
    if SearchRec.Attr = faDirectory then
    begin
      if (SearchRec.name <> '' ) and (SearchRec.name <> '.') and
      (SearchRec.name <> '..') then
        MyRemoveDir(sFileName);
    end
    else
    begin
      if SearchRec.Attr <> faArchive then
        FileSetAttr(sFileName, faArchive);
      if not DeleteFile(sFileName) then
        ShowMessage('Could NOT delete ' + sFileName);
    end;
    iIndex := FindNext(SearchRec);
  end;

  FindClose(SearchRec);
  RemoveDir(ExtractFileDir(sDir));
  Result := True;



  end;

PM MAIL   Вверх
Данкинг
Дата 1.8.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(arm11111 @  1.8.2009,  13:55 Найти цитируемый пост)
но не мне не нравится сообщение ShowMessage кто нить помогите , его убрать отсюда ..



Код

function MyRemoveDir(sDir : string) : Boolean;
var
  iIndex: Integer;
  SearchRec: TSearchRec;
  sFileName: string;
begin
  Result := False;
  sDir := sDir + '\*.*';
  iIndex := FindFirst(sDir, faAnyFile, SearchRec);

  while iIndex = 0 do
  begin
    sFileName := ExtractFileDir(sDir)+'\'+SearchRec.name;
    if SearchRec.Attr = faDirectory then
    begin
      if (SearchRec.name <> '' ) and (SearchRec.name <> '.') and
      (SearchRec.name <> '..') then
        MyRemoveDir(sFileName);
    end
    else
    begin
      if SearchRec.Attr <> faArchive then
        FileSetAttr(sFileName, faArchive);
      if not DeleteFile(sFileName) then
        //ShowMessage('Could NOT delete ' + sFileName);
    end;
    iIndex := FindNext(SearchRec);
  end;

  FindClose(SearchRec);
  RemoveDir(ExtractFileDir(sDir));
  Result := True;


  end;

 smile  smile  smile  smile 
Я молодец? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Keeper89
Дата 1.8.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Данкинг
молодец, щас плюсег поставлю smile


--------------------
PM MAIL WWW   Вверх
arm11111
Дата 1.8.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 31.7.2009

Репутация: нет
Всего: нет



нет не молодец .. ты просто гений ! )))
PM MAIL   Вверх
Данкинг
Дата 1.8.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Ещё задания будут? Более сложные, к примеру, с использованием {} ? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
arm11111
Дата 1.8.2009, 13:47 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 31.7.2009

Репутация: нет
Всего: нет



ну если тебе не сложно .. как узнать под какой учетной записью сидит пользователь ? )) спасибо .
PM MAIL   Вверх
Данкинг
Дата 1.8.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(arm11111 @ 1.8.2009,  14:47)
ну если тебе не сложно .. как узнать под какой учетной записью сидит пользователь ? )) спасибо .

Отвечу, но на будущее учти правило "одна тема - один вопрос". smile 

Код

function GetUserFromWindows: string;

var

UserName : string;

UserNameLen : Dword;

begin

UserNameLen := 255;

SetLength(userName, UserNameLen);

if GetUserName(PChar(UserName), UserNameLen) then

   Result := Copy(UserName,1,UserNameLen - 1)

else

   Result := '';

end;



Это сообщение отредактировал(а) Данкинг - 1.8.2009, 14:09


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
arm11111
Дата 1.8.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 31.7.2009

Репутация: нет
Всего: нет



блин .. надо же так разбираться ))) жалко плюсы не могу ставить . СПАСИБО !!!
PM MAIL   Вверх
Данкинг
Дата 1.8.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



На здоровье. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
THandle
Дата 1.8.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372




 ! 
THandle

Модератор: Пожалуйста, один топик - один вопрос.
Модератор: пользуйтесь подсветкой кода!


Это все для arm11111smile 

Цитата(arm11111 @  1.8.2009,  15:13 Найти цитируемый пост)
жалко плюсы не могу ставить


Сейчас поставлю. smile

Данкинг, код сильно смахивает по внешнему виду на ДРКБ smile 

Модератор: тема закрыта. 
PM   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0805 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.