Format Function / Procedure

 

From: david.ku@virgin.net (David Ku)

There is an API hidden away in Shell32.dll called SHFormatDrive, this brings up the standard format removable drive dialog. I stumbled across this in the borland.public.delphi.winapi newsgroup.

 


{implementation section}

..

..

const

        SHFMT_ID_DEFAULT                         = $FFFF;

        // Formating options

        SHFMT_OPT_QUICKFORMAT   = $0000;

        SHFMT_OPT_FULL                          = $0001;

        SHFMT_OPT_SYSONLY               = $0002;

        // Error codes

        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('Could not format drive');

end;

 

end.

 


How to del ALL files within directory

From: TM

Try this:

 


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;

 


If you want to delete the directory afterwards, you could do something like this:

 


//--------

        DelDir('C:\WASTE');

        {-I}

        RmDir('C:\WASTE');

        {+I}

        if IOResult <> 0 then

                raise Exception.Create('Error removing directory');

//-------

 


The recursion code, AFAIK, is by David Ullrich. *tips hat*