Formatar Disquete (3ª Tentativa)
Essa função aqui abaixo eu já tenho, o que eu queria era uma rotina diferete, que naum chame a shell32.dll
Mas mesmo assim obrigado Nelson
{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´
no onclick do botao bote:
var
retCode: LongInt;
begin
retCode:= SHFormatDrive(Handle, 0, SHFMT_ID_DEFAULT, SHFMT_OPT_QUICKFORMAT);
if retCode < 0 then ShowMessage(´Não existe disquete no drive´);
Mas mesmo assim obrigado Nelson
{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´
no onclick do botao bote:
var
retCode: LongInt;
begin
retCode:= SHFormatDrive(Handle, 0, SHFMT_ID_DEFAULT, SHFMT_OPT_QUICKFORMAT);
if retCode < 0 then ShowMessage(´Não existe disquete no drive´);
Poeta Noturno
Curtidas 0
Respostas
Anonymous
07/03/2003
Function FormataDisquete(Drive: String; FormatarRapido: Boolean; FormatarCompleto: Boolean; CopiaSistema: Boolean): Integer;
Var Handle: HWND;
MSG: STRING;
Drv: Integer; //Indica o Drive;
TipoFormatacao: Integer; //Word;
Const
Drives = ´ABCDEFGHIJKLMNOPQRSTUVWZYZ´;
SHFMT_ID_DEFAULT = $FFFF;
begin
Handle:=Application.Handle;
Drv:=Pos(UpperCase(Drive),Drives)-1;
//Seta o Tipo de Formatacao.
if FormatarRapido then
TipoFormatacao:=0
else
if FormatarCompleto then
TipoFormatacao:=1
else
if CopiaSistema then
TipoFormatacao:=2;
Result:=SHFormatDrive(Handle, Drv, SHFMT_ID_DEFAULT, TipoFormatacao);
end;
Use assim...
procedure TFmMenu.FormatarDisquete1Click(Sender: TObject);
Var Erro: Integer;
Const
// Códigos de erros
HOUVEERRO = -1; { Ocorreu erro }
CANCELADO = -2; { Foi cancelado }
NAOFORMATOU = -3; { Não formatou }
begin
Erro:=FormataDisquete(´A´,True,False,False);
if Erro=HOUVEERRO then begin
AbreMensagem(´Atenção : Houve um erro ao formatar o disco.´
+chr(13)+chr(13)+ ´Solução : Verifique se a proteção do disco está sendo usada e se a porta do drive foi fechada ou troque o disco e tente novamente.´
+ chr(13),2,1,´Ok´,´´)
end
else begin
if Erro=CANCELADO then begin
AbreMensagem(´Atenção : A formatação do disco foi cancelada.´
+ chr(13),2,1,´Ok´,´´)
end
else begin
if Erro=NAOFORMATOU then begin
AbreMensagem(´Atenção : Não foi possível formatar o disco.´
+chr(13)+chr(13)+ ´Possivelmente este disco está danificado.´
+chr(13)+chr(13)+ ´Solução : Troque o disco e tente novamente.´
+ chr(13),2,1,´Ok´,´´)
end;
end;
end;
end;
OBS.: Eu uso um form especial para as mensagens do Sistema, por isso em vez de AbreMensagem use showmessage mesmo... Claro... Adequando apropriadamente.....
Um Abraço
Werlon Goulart
Var Handle: HWND;
MSG: STRING;
Drv: Integer; //Indica o Drive;
TipoFormatacao: Integer; //Word;
Const
Drives = ´ABCDEFGHIJKLMNOPQRSTUVWZYZ´;
SHFMT_ID_DEFAULT = $FFFF;
begin
Handle:=Application.Handle;
Drv:=Pos(UpperCase(Drive),Drives)-1;
//Seta o Tipo de Formatacao.
if FormatarRapido then
TipoFormatacao:=0
else
if FormatarCompleto then
TipoFormatacao:=1
else
if CopiaSistema then
TipoFormatacao:=2;
Result:=SHFormatDrive(Handle, Drv, SHFMT_ID_DEFAULT, TipoFormatacao);
end;
Use assim...
procedure TFmMenu.FormatarDisquete1Click(Sender: TObject);
Var Erro: Integer;
Const
// Códigos de erros
HOUVEERRO = -1; { Ocorreu erro }
CANCELADO = -2; { Foi cancelado }
NAOFORMATOU = -3; { Não formatou }
begin
Erro:=FormataDisquete(´A´,True,False,False);
if Erro=HOUVEERRO then begin
AbreMensagem(´Atenção : Houve um erro ao formatar o disco.´
+chr(13)+chr(13)+ ´Solução : Verifique se a proteção do disco está sendo usada e se a porta do drive foi fechada ou troque o disco e tente novamente.´
+ chr(13),2,1,´Ok´,´´)
end
else begin
if Erro=CANCELADO then begin
AbreMensagem(´Atenção : A formatação do disco foi cancelada.´
+ chr(13),2,1,´Ok´,´´)
end
else begin
if Erro=NAOFORMATOU then begin
AbreMensagem(´Atenção : Não foi possível formatar o disco.´
+chr(13)+chr(13)+ ´Possivelmente este disco está danificado.´
+chr(13)+chr(13)+ ´Solução : Troque o disco e tente novamente.´
+ chr(13),2,1,´Ok´,´´)
end;
end;
end;
end;
OBS.: Eu uso um form especial para as mensagens do Sistema, por isso em vez de AbreMensagem use showmessage mesmo... Claro... Adequando apropriadamente.....
Um Abraço
Werlon Goulart
GOSTEI 0