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

Поиск:

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


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



использую такой код
Код
procedure TfmMain.bOpenClick(Sender: TObject);
var
i:integer;
sl:TStringList;
begin
 if od1.Execute then begin//показываем диалог выбора файла (MultiSelect:=true)
   sl:=TStringList.Create;
   sl.Clear;
   _sl.Clear;
   for i:=0 to od1.Files.Count-1 do begin
     sl.Clear;
     sl.LoadFromFile(od1.Files[i]);
     _sl.LoadFromFile(od1.Files[i]);
      //если включен переключатель, то удаляем в корзину
     if cbDelFiles.Checked then Recycle(od1.Files, Handle);
     re1.Lines.AddStrings(sl);
   end;
  sl.Free;
 end;
end;


процедура удаления файлов в козину
Код
function TfmMain.Recycle(const FileNames: TStrings; Wnd: HWND = 0): Boolean;
var
 FileOp: TSHFileOpStruct;
//  FileName:String;
 sl1:TStringList;
 u:integer;
begin
 sl1:=TStringList.Create;
 sl1.Clear;
 sl1.AddStrings(FileNames);

 For u:=0 to sl1.Count-1 do begin
   FillChar(FileOp, SizeOf(FileOp), 0);
   if Wnd = 0 then
     Wnd := Application.Handle;
   FileOp.Wnd := Wnd;
   FileOp.wFunc := FO_DELETE;
   FileOp.pFrom := PChar(sl1[u]);
   FileOp.fFlags := FOF_ALLOWUNDO or FOF_NOERRORUI or FOF_SILENT or FOF_NOCONFIRMATION;
   Result := (SHFileOperation(FileOp) = 0) and (not FileOp.fAnyOperationsAborted);
 end;
end;

Проблема в том, что из папки удаляются не все файлы
1 файл попадает в корзину, остальные просто остаются в исходной папкепапке.
PM MAIL   Вверх
Girder
Дата 23.9.2004, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


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

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



1)
Код
procedure Recycle(const FileNames:TStrings;Wnd:HWND=0);
var SHF:_SHFileOpStructA;
   Name:PChar;
   SizeName:Cardinal;
   u:integer;
begin
For u:=0 to FileNames.Count-1 do
 begin
  SizeName:=Length(FileNames.Strings[u])+2;
  GetMem(Name,SizeName);
  FillChar(Name^,SizeName,0);
  StrCopy(Name,PChar(FileNames.Strings[u]));
  FillChar(SHF,SizeOf(SHF),0);
  with SHF do
   begin
    if Wnd=0 then Wnd:=Application.Handle;
    wFunc:=FO_DELETE;
    pFrom:=Name;
    fFlags:=FOF_ALLOWUNDO or FOF_NOERRORUI or FOF_NOCONFIRMATION;
   end;
  try
   SHFileOperation(SHF);
  except
  end;
  FreeMem(Name,SizeName);
 end;
end;

2)
Код
if cbDelFiles.Checked then Recycle(od1.Files, Handle);
Вынеси из For wink.gif. А то он срузу тебе удалит все и произойдет облом на LoadFromFile в дальнейшем.

PS: Мне вот интересно, как ты собирался использовать Result smile.gif когда он в цикле.

Удачи.


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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