Советы по 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 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]



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