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

Поиск:

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


Творец
****


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

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



Файл отправляется в корзину, но все равно остается на прежнем месте smile

Код

procedure TfmMain.FilesToRecycle(const FileName:String;Wnd:HWND=0);
var SHF:_SHFileOpStructA;
 Name:PChar;
 SizeName:Cardinal;
begin
 screen.Cursor := crHourGlass;
 Name:='';
 SizeName:=0;
 try
   SizeName:=Length(FileName)+2;
   GetMem(Name,SizeName);
   FillChar(Name^,SizeName,0);
   StrCopy(Name,PChar(FileName));
   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;
 finally
   FreeMem(Name,SizeName);
   screen.Cursor := crDefault;
 end;//try-finally
end;

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


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

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



dsergey
Удали его после отправки в корзину.
PM MAIL   Вверх
Akella
Дата 1.4.2005, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



lvFiles - TListView
вот код удаления
Код

  if application.MessageBox(PAnsiChar('Удалить?'),'ВНИМАНИЕ!',MB_YESNO) = IDYES then
     For iDel:=0 to lvFiles.Items.Count-1 do
       if lvFiles.Items[iDel].Selected then begin
         FilesToRecycle(sTlfPath+lvFiles.Items[iDel].Caption+'.ob',Handle);
         DeleteFile(sTlfPath+lvFiles.Items[iDel].Caption+'.ob');
       end;//if



Это сообщение отредактировал(а) dsergey - 1.4.2005, 13:41
PM MAIL   Вверх
Akella
Дата 1.4.2005, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



бред какой-то, нифига не получается
Добавлено @ 14:08
путь проверял - нормально, но факт в том, что отправляет в корзину, но файлы остаются все равно
PM MAIL   Вверх
Rennigth
Дата 1.4.2005, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



dsergey
незнаю в чем у тебя проблемма, но точно не в процедуре удаления.
вот этот код прекрасно к\у меня отработал:
Код

procedure FilesToRecycle(const FileName: string; Wnd: HWND = 0);
var
  SHF: _SHFileOpStructA;
  Name: PChar;
  SizeName: Cardinal;
  lSaveCursor: TCursor;
begin
  lSaveCursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  Name:='';
  SizeName:=0;
  try
    SizeName:=Length(FileName)+2;
    GetMem(Name,SizeName);
    FillChar(Name^,SizeName,0);
    StrCopy(Name,PChar(FileName));
    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;
  finally
    FreeMem(Name,SizeName);
    screen.Cursor := lSaveCursor;
  end;//try-finally
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  lFileName: string;
begin
  lFileName := 'c:\Test.xml';
  if FileExists(lFileName) then
    if application.MessageBox(PAnsiChar('Óäàëèòü?'),'ÂÍÈÌÀÍÈÅ!',MB_YESNO) = IDYES then
    begin
      FilesToRecycle(lFileName, Handle);
      DeleteFile(lFileName);
    end;//if
end;


может у тебя файл не находит который ты указываешь.




--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Rennigth
Дата 1.4.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



или посмотри аттрибуты файлов которые удаляешь, может быть они у тебя readonly
Добавлено @ 15:27
попробуй так

Код

var
  lFileName: string;
begin
//...
  if application.MessageBox(PAnsiChar('Óäàëèòü?'),'ÂÍÈÌÀÍÈÅ!',MB_YESNO) = IDYES then
     For iDel:=0 to lvFiles.Items.Count-1 do
       if lvFiles.Items[iDel].Selected then
       begin
         lFileName := sTlfPath+lvFiles.Items[iDel].Caption+'.ob';
         if FileExist(lFileName) then
         begin
           FilesToRecycle(lFileName, Handle);
           SetFileAttributes(lFileName , FILE_ATTRIBUTE_NORMAL);
           DeleteFile(lFileName);
         end;
       end;//if










--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Akella
Дата 1.4.2005, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



разобрался, дело не в процедуре удаления.

дело в следующем - в процедуре удаления выбираются итемы (см. выше) для удаления и срабатывает событие lvFilesSelectItem, в нем есть строка сохранения сетки, т.е. файла, поэтому файлы в корзину отправляются а удалиться не могут smile
Код

procedure TfmMain.lvFilesSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
 if bDeleting then exit;//ВСТАВИЛ ЭТУ СТРОЧКУ
  if not Selected then begin//
    SaveGrid(Item.Caption);//здесь происходит запись в файл и наверняка он не удаляется
    application.ProcessMessages;
  end;//if not Selected then begin

  if Selected then begin//
    lbTlf.Text:=item.Caption;
    Reload(item);
    application.ProcessMessages;
    sOldFileName:=Item.Caption;
  end;//if Selected then begin
end;



Это сообщение отредактировал(а) dsergey - 1.4.2005, 15:42
PM MAIL   Вверх
Akella
Дата 1.4.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



я тоже сначала удивился, т.к. в день назад всё удалялось в корзину нормально smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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