Идёт загрузка страницы...

htp://aptem.net.ru





Процедура форматирования

В Shell32.dll спрятана WinAPI функция SHFormatDrive, вызывающая стандартный диалог форматирования сменного накопителя. Я уже встречал этот вопрос в конференции borland.public.delphi.winapi.


    {раздел реализации}
..
..

const
SHFMT_ID_DEFAULT        = $FFFF;
// Опции форматирования
SHFMT_OPT_QUICKFORMAT   = $0000;
SHFMT_OPT_FULL          = $0001;
SHFMT_OPT_SYSONLY       = $0002;
// Коды ошибок
SHFMT_ERROR             = $FFFFFFFF;
SHFMT_CANCEL            = $FFFFFFFE;
SHFMT_NOFORMAT          = $FFFFFFFD;

function SHFormatDrive(Handle: HWND; Drive, ID, Options: Word): LongInt;
stdcall; external 'shell32.dll' name 'SHFormatDrive'

procedure TForm1.btnFormatDiskClick(Sender: TObject);
var
retCode: LongInt;
begin
retCode:=       SHFormatDrive(Handle, 0, SHFMT_ID_DEFAULT,
SHFMT_OPT_QUICKFORMAT);
if retCode < 0 then
ShowMessage('Не могу отформатировать накопитель');
end;

end.

Как удалить все файлы из директории?

Попробуй это:


    procedure TfrmMain.DelDir(DirName: string);
var
SearchRec: TSearchRec;
GotOne: integer;
begin
GotOne:= FindFirst(DirName + '\*.*', faAnyFile, SearchRec);
while GotOne = 0 do
begin
if ((SearchRec.Attr and faDirectory) = 0) then
DeleteFile(DirName + '\' + SearchRec.Name)
else if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
DelDir(DirName + '\' + SearchRec.Name);
GotOne:= FindNext(SearchRec);
end;
FindClose(SearchRec);
end;

Если впоследствии Вы захотите директорию удалить, попробуйте сделать так:


    //--------
DelDir('C:\WASTE');
{-I}
RmDir('C:\WASTE');
{+I}
if IOResult <> 0 then
raise Exception.Create('Ошибка удаления каталога');
//-------

Автор рекурсивного кода David Ullrich. [000079]