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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление файла в корзину, и без вопросов 
:(
    Опции темы
h2o
Дата 12.12.2005, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



в DRKB есть пример, но вот он работает только на 1 компе, на 2х других, где операционка такаяже точно, с тогоже СД установлена, там вопрос типа "удалить в корзину" вылезает, а надо, чтобы не вылезал!
Код

...
  TBuffer = array of Char;
implementation

procedure CreateBuffer( Names : array of string; var P : TBuffer );
var I, J, L : Integer;
begin
  for I := Low( Names ) to High( Names ) do
    begin
      L := Length( P );
      SetLength( P, L + Length( Names[ I ] ) + 1 );
      for J := 0 to Length( Names[ I ] ) - 1 do
        P[ L + J ] := Names[ I, J + 1 ];
      P[ L + J ] := #0;
    end;
  SetLength( P, Length( P ) + 1 );
  P[ Length( P ) ] := #0;
end; 

function DeleteFiles( Handle : HWnd; Names : array of string; ToRecycle : Boolean ) : Integer;
var
  SHFileOpStruct : TSHFileOpStruct;
  Src : TBuffer;
begin
  CreateBuffer( Names, Src );
  with SHFileOpStruct do
    begin
      Wnd := Handle;
      wFunc := FO_DELETE;
      pFrom := Pointer( Src );
      pTo := nil;
      fFlags := 0;
      if ToRecycle then fFlags := FOF_ALLOWUNDO;
      fAnyOperationsAborted := False;
      hNameMappings := nil;
      lpszProgressTitle := nil;
    end;
  Result := SHFileOperation( SHFileOpStruct );
  Src := nil;
end;


Вроде бы всё правильно, не должна вопросов задавать! а задает!!! я вообще не понимаю что за лажа может быть?
Может есть другой способ у кого-нибудь?

Повторяю, нужно чтобы было удаление файла в корзину, без единого вопроса под ХР, 2000, 2003, 98ю не надо!
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Poseidon
Дата 12.12.2005, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(h2o @ 12.12.2005, 12:16)
но вот он работает только на 1 компе, на 2х других, где операционка такаяже точно, с тогоже СД установлена, там вопрос типа "удалить в корзину" вылезает
Просто на этом компе в свойствай Корзины снята "галочка" "Запрашивать подтверждение на удаление", а на двух других эта "галочка" установлена.

Мне кажется что можно как-то программно сказать винде, что "галочка снята", и кажется что это нужно говорить по средствам реестра. Нужно порыть...


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
SoWa
Дата 12.12.2005, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


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

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



Можно удалять файл Не в корзину:
Код

var f: file;

begin
  assignfile(f,opendialog1.filename);
  erase(f);
end;

Но галочка "Запрашивать..." у меня стоит. Удаляет без проблемм, не спрашивая. Может это из-зи Win2000?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Dron84
Дата 12.12.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Можно так
Код

function Recycle(const FileName: string; Wnd: HWND = 0): Boolean;
var
  FileOp: TSHFileOpStruct;
begin
  FillChar(FileOp, SizeOf(FileOp), 0);
  if Wnd = 0 then
    Wnd := Application.Handle;
  FileOp.Wnd := Wnd;
  FileOp.wFunc := FO_DELETE;
  FileOp.pFrom := PChar(FileName);
  FileOp.fFlags := FOF_ALLOWUNDO or FOF_NOERRORUI or FOF_SILENT;
  Result := (SHFileOperation(FileOp) = 0) and (not
    FileOp.fAnyOperationsAborted);
end;

использовать
Код

procedure TForm1.Button1Click(Sender: TObject)
begin
  Recycle('d:\folder\filename.ext', Handle);
end;

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


Харекришна
****


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

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



А это не одно и тоже: код Dron84 и h2o???


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
FRAGNATIC
Дата 12.12.2005, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


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

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



Цитата
Но галочка "Запрашивать..." у меня стоит. Удаляет без проблемм, не спрашивая. Может это из-зи Win2000?

lol
просто так ты затираешь файл и всё )
а удаление через корзину это файл сначао помещается в корзину (на харде папка для этого отведена) и опятьже с той папки (точный путь не помню) мона удалить файл ! а вот средствами корзины когда удаляешь она спрашивает сначало потверждение)
PM MAIL   Вверх
RA
Дата 12.12.2005, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


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

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



Флаг должен быть ->
Код

fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION ;

PM   Вверх
Dron84
Дата 12.12.2005, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



SoWa
идея одна и таже, но написано по разному... smile
PM MAIL   Вверх
h2o
Дата 13.12.2005, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



я когда пробовал делать
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
то комп в циклическом действии
делал что-то моё... потом удалял фаил... потом опять делал что-то моё... и так заданное количество раз
Но вот странность первый фаил удаляет без вопросов, а при втором круге прога виснет на удалении?
или не надо
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
а просто надо
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION ; - как написал RAdmin
я так не пробовал, но тогда что значит флаг FOF_SILENT?
поидее флаг
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
значит - втихушку удалить фаил в корзину без подтверждения?
что не так?

--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
h2o
Дата 13.12.2005, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



а вообще почему fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION
а например не fFlags := FOF_ALLOWUNDO and FOF_NOCONFIRMATION
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Alexeis
Дата 13.12.2005, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата
Но вот странность первый фаил удаляет без вопросов, а при втором круге прога виснет на удалении?


Может надо дождаться завершения предыдущей операции а потом
приступать к следующей


Цитата
а вообще почему fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION

Потому что "or" это логическая побитовая сумма а "and"
умножение ("and" скорее всего вернет $000000)

Это сообщение отредактировал(а) alexeis1 - 13.12.2005, 12:04


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Girder
Дата 13.12.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


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

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





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

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

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

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

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


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

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


 




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


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

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