Советы по Delphi

       

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


В 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 thenShowMessage('Не могу отформатировать накопитель');end;

end.

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

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



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

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

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

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



Содержание раздела