Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2011, 11:08   #1
stebelek
Пользователь
 
Регистрация: 26.06.2011
Сообщений: 12
Стрелка удалить файлы и папку (с содержимым)

Добрый день, нужно написать прогу при запуске которой будут удаляться файлы и папка(с содержимым) в общем написал код только для удаления файлов, кто поможет с папкой? Желательно в аське номер 969648, выручайте плиззз, я чайник в делфи.


и ещё хотелось бы вывести в проге какую нибудь строку состояния что ли , чтобы было видно что прога работает, а не тупо нажал кнопку и оно удалилось

короче человека ищу кто за спасибо расскажет/научит элементарному
заранее спасибо

вот код проги:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
SysUtils.DeleteFile('skynet.log');
SysUtils.DeleteFile('files.dat');
SysUtils.DeleteFile('file.dat');
SysUtils.DeleteFile('fa0.log');
SysUtils.DeleteFile('files.dat.bak');
SysUtils.DeleteFile('ftp_dir.log');
SysUtils.DeleteFile('skynet.ini~');
SysUtils.DeleteFile('streamreader.log');
SysUtils.DeleteFile('StreamReader.log');
SysUtils.DeleteFile('fish.log');
SysUtils.DeleteFile('session.pids');
SysUtils.DeleteFile('mac_stat.dat');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;

end.



___________
1) Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В дальнейшем темы с подобным названием будут закрываться/удаляться.

2) Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)

Не забывайте об этом!

Модератор.

Последний раз редактировалось stebelek; 01.07.2011 в 11:21.
stebelek вне форума Ответить с цитированием
Старый 01.07.2011, 11:13   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Вот, посмотрите ссылку.
_-Re@l-_ вне форума Ответить с цитированием
Старый 01.07.2011, 11:20   #3
stebelek
Пользователь
 
Регистрация: 26.06.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Вот, посмотрите ссылку.
Но ведь RemoveDir('Новая папка'); для пустых папок!? или я ошибаюсь?
stebelek вне форума Ответить с цитированием
Старый 01.07.2011, 11:25   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

_-Re@l-_, нет, так не пойдёт... RmDir удалит только ПУСТОЙ каталог.
А каталог с содержимым не сможет. (выдаст ошибку)


вот пример из DelphiWorld:
Код:
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;

p.s. ВНИМАНИЕ! Папка удалится без всяких вопросов вместе со всеми сложенными подпапками (и всеми вложенными файлами)! НАПРОЧЬ!
Будьте крайне осторожны и бдительны!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.07.2011, 11:29   #5
stebelek
Пользователь
 
Регистрация: 26.06.2011
Сообщений: 12
По умолчанию

помогите разобраться с этим кодом, ну типа что для чего
stebelek вне форума Ответить с цитированием
Старый 01.07.2011, 11:35   #6
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Вот, ещё нашёл.
_-Re@l-_ вне форума Ответить с цитированием
Старый 01.07.2011, 11:46   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
помогите разобраться с этим кодом, ну типа что для чего
А что Вы хотите разобрать то?!

в список используемых модулей (в секцию uses ) дописать имя модуля ShellApi

т.к. функция использует структуры данных и функции этого модуля. Фактически происходит заполнение нужных структур и вызов функции Windows - а она уже делает то, что её попросили.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.07.2011, 11:55   #8
stebelek
Пользователь
 
Регистрация: 26.06.2011
Сообщений: 12
По умолчанию

Вот так должно получиться?


Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,   ShellApi;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

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;



var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
DelDir(dir: 'temp');
SysUtils.DeleteFile('skynet.log');
SysUtils.DeleteFile('files.dat');
SysUtils.DeleteFile('file.dat');
SysUtils.DeleteFile('fa0.log');
SysUtils.DeleteFile('files.dat.bak');
SysUtils.DeleteFile('ftp_dir.log');
SysUtils.DeleteFile('skynet.ini~');
SysUtils.DeleteFile('streamreader.log');
SysUtils.DeleteFile('StreamReader.log');
SysUtils.DeleteFile('fish.log');
SysUtils.DeleteFile('session.pids');
SysUtils.DeleteFile('mac_stat.dat');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Close; // закрыть главное окно программы
end;

procedure TForm1.Label1Click(Sender: TObject);
begin

end;

end.
stebelek вне форума Ответить с цитированием
Старый 01.07.2011, 11:58   #9
stebelek
Пользователь
 
Регистрация: 26.06.2011
Сообщений: 12
По умолчанию

Блин, нифига не разберусь
stebelek вне форума Ответить с цитированием
Старый 01.07.2011, 12:03   #10
stebelek
Пользователь
 
Регистрация: 26.06.2011
Сообщений: 12
По умолчанию

А можно это всё сделать при помощи командной строки? так чтобы запускал я екзешник нажимал в нем кнопку очистить и пошло-поехало всё в командной строке выполняться?



есть конечно вариант чтобы в одной папке с екзешником лежал файл *.bat с кодом:
Код:
del /f /s /q skynet.log
del /f /s /q files.dat
del /f /s /q file.dat
del /f /s /q fa0.log
del /f /s /q files.dat.bak
del /f /s /q ftp_dir.log
del /f /s /q skynet.ini~
del /f /s /q streamreader.log
del /f /s /q StreamReader.log
del /f /s /q fish.log
del /f /s /q session.pids
del /f /s /q mac_stat.dat
cls
color 0A
ver
echo.
echo viewing TEMP directory
dir temp /B /S
echo.
hostname
echo I ready delete temporary files
echo.
pause
rd /s /q temp
mkdir temp
а кнопка тупо запускала его, но хочу чтобы программа состояла только из одного exe файла
stebelek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить поврежденную папку? Vikenty Компьютерное железо 13 21.10.2011 20:18
Как удалить неудаляющуюся папку? Yury111 Безопасность, Шифрование 69 15.11.2009 19:46
скопировать папку со всем её содержимым Tech07 Общие вопросы Delphi 8 02.12.2007 12:06
удалить папку без Димарик Общие вопросы Delphi 3 04.10.2007 13:12
Как скопировать папку со всем ее содержимым Arsgun Общие вопросы Delphi 2 09.06.2007 22:07