procedure TForm1.DriveComboBox1Change(Sender: TObject);
var
str1 : String ;
err_code : integer ;
lpDirectoryName : string;
lpFreeBytesAvailable : Int64;
lpTotalNumberOfBytes : Int64;
lpTotalNumberOfFreeBytes : Int64;
begin
lpDirectoryName := DriveComboBox1.Drive + ':\' ;
if GetDiskFreeSpaceEx(PChar(lpDirectoryName),lpFreeBytesAvailable,
lpTotalNumberOfBytes,@lpTotalNumberOfFreeBytes) = True then
begin
//関数が正常に終了した場合、DirectoryListBox1のドライブを変更
DirectoryListBox1.Drive := DriveComboBox1.Drive ;
end else begin
//詳細なエラー情報取得
//(GetDiskFreeSpaceExで返されるエラー)
err_code := GetLastError ;
case err_code of
0 : str1 := 'NO_ERROR' ;
1 : str1 := 'ERROR_INVALID_FUNCTION' ;
2 : str1 := 'ERROR_FILE_NOT_FOUND' ;
3 : str1 := 'ERROR_PATH_NOT_FOUND' ;
4 : str1 := 'ERROR_TOO_MANY_OPEN_FILES' ;
5 : str1 := 'ERROR_ACCESS_DENIED' ;
6 : str1 := 'ERROR_INVALID_HANDLE' ;
7 : str1 := 'ERROR_ARENA_TRASHED' ;
8 : str1 := 'ERROR_NOT_ENOUGH_MEMORY' ;
9 : str1 := 'ERROR_INVALID_BLOCK' ;
10 : str1 := 'ERROR_BAD_ENVIRONMENT' ;
11 : str1 := 'ERROR_BAD_FORMAT' ;
12 : str1 := 'ERROR_INVALID_ACCESS' ;
13 : str1 := 'ERROR_INVALID_DATA' ;
14 : str1 := 'ERROR_OUTOFMEMORY' ;
15 : str1 := 'ERROR_INVALID_DRIVE' ;
16 : str1 := 'ERROR_CURRENT_DIRECTORY' ;
17 : str1 := 'ERROR_NOT_SAME_DEVICE' ;
18 : str1 := 'ERROR_NO_MORE_FILES' ;
19 : str1 := 'ERROR_WRITE_PROTECT' ;
20 : str1 := 'ERROR_BAD_UNIT' ;
21 : str1 := 'ERROR_NOT_READY' ;
22 : str1 := 'ERROR_BAD_COMMAND' ;
23 : str1 := 'ERROR_CRC' ;
24 : str1 := 'ERROR_BAD_LENGTH' ;
25 : str1 := 'ERROR_SEEK' ;
26 : str1 := 'ERROR_NOT_DOS_DISK' ;
27 : str1 := 'ERROR_SECTOR_NOT_FOUND' ;
28 : str1 := 'ERROR_OUT_OF_PAPER' ;
29 : str1 := 'ERROR_WRITE_FAULT' ;
30 : str1 := 'ERROR_READ_FAULT' ;
31 : str1 := 'ERROR_GEN_FAILURE' ;
32 : str1 := 'ERROR_SHARING_VIOLATION' ;
33 : str1 := 'ERROR_LOCK_VIOLATION' ;
34 : str1 := 'ERROR_WRONG_DISK' ;
else
str1 := '??' ;
end ;
MessageDlg(str1,mtError,[mbOK],0);
//DriveComboBox1のドライブをDirectoryListBox1のドライブに戻す
DriveComboBox1.Drive := DirectoryListBox1.Drive ;
end ;
end;
|