// Laufwerk A wird
formatiert. function FormatiereA: Integer;
var
Datei: string;
sl: TStringlist;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
SektorenProCluster, BytesProSektor, FreieCluster, ClusterInsgesamt: DWord;
begin
screen.cursor := crHourGlass;
try
Datei := '~.tmp';
sl := TStringlist.create;
sl.add('');
sl.add('');
sl.add('n');
sl.savetofile(Datei);
sl.free;
StartupInfo.cb := SizeOf(TStartupInfo);
zeromemory(@StartupInfo, SizeOf(TStartupInfo));
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_HIDE;
if CreateProcess(nil, PChar('cmd.exe /c format A: < ' + Datei), nil, nil,
false, 0, nil, nil, StartupInfo, ProcessInfo)
then begin
repeat
application.processmessages;
until
WaitForSingleObject(ProcessInfo.hProcess, Infinite) <> WAIT_TIMEOUT;
end else begin
DeleteFile(Datei);
screen.cursor := crDefault;
Result := -1;
exit;
end;
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
if GetDiskFreeSpace('A:', SektorenProCluster, BytesProSektor,
FreieCluster, ClusterInsgesamt) then
Result := (1457664 - FreieCluster * SektorenProCluster * BytesProSektor)
div BytesProSektor else Result := -1;
except
Result := -1;
end;
DeleteFile(Datei);
screen.cursor := crDefault;
end;
procedure TForm1.Button8Click(Sender: TObject);
var
i: integer;
s: string;
begin
i := formatiereA;
case i of
-1: s := 'Formatieren fehlgeschlagen';
0: s := 'OK';
else s := inttostr(i) + ' schadhafte Sektoren';
end;
showmessage(s);
end;
|
Zugriffe seit 6.9.2001 auf Delphi-Ecke





