カレントディレクトリを求める
|
29 |
CurrentDirectoryCheck |
動作確認 |
Delphi2007 |
更新日 |
2008/01/16(水) |
カレントディレクトリを求める関数を作りました。
次のようなものです。
────────────────────
const
DriveLetterStr: String = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
function DriveIndex(DriveLetter: Char): Byte;
begin
Result := Pos(UpperCase(DriveLetter), DriveLetterStr);
end;
procedure testDriveIndex;
begin
Check(1, DriveIndex('A'));
Check(1, DriveIndex('a'));
Check(3, DriveIndex('C'));
Check(3, DriveIndex('c'));
Check(24,DriveIndex('X'));
Check(24,DriveIndex('x'));
Check(26,DriveIndex('Z'));
Check(26,DriveIndex('z'));
end;
{-------------------------------
// カレントディレクトリを求める関数
機能: DriveLetterを'A'とか指定すると
そのドライブのカレントディレクトリを求めるが
存在しなかったり利用できないドライブの場合
カレントドライブのカレントディレクトリが返される
備考:
履歴: 2006/07/02(日) 22:45
//------------------------------}
function GetCurrentDir: String; overload;
begin
GetDir(0, Result);
end;
function GetCurrentDir(DriveLetter: Char): String; overload;
begin
GetDir(DriveIndex(DriveLetter), Result);
if not SameText(DriveLetter, Result[1]) then
begin
Result := '';
end;
end;
//------------------------------
────────────────────
使い方は次のようにします。
────────────────────
program CurDirCheck;
uses
SysUtils,
Dialogs;
function GetCurrentDir: String; overload;
function GetCurrentDir(DriveLetter: Char): String; overload;
//実装は上記参照
var
i: Integer;
DriveString: String;
CurrentStrings: String;
CurrentDirStr: String;
begin
DriveString := GetDriveString;
CurrentStrings := '';
for i := 1 to Length(DriveString) do
begin
CurrentDirStr := GetCurrentDir(DriveString[i]);
if CurrentDirStr = '' then
begin
CurrentStrings := CurrentStrings +
DriveString[i] + 'ドライブ ' +
'利用できません' + #10;
end else
begin
CurrentStrings := CurrentStrings +
DriveString[i] + 'ドライブ ' +
CurrentDirStr + #10;
end;
end;
SetLength(CurrentStrings, Length(CurrentStrings)-1);
ShowMessage('カレントディレクトリは'+#10+
GetCurrentDir +#10#10+
'使用可能なドライブは'+#10+
DriveString +#10#10+
'それぞれのカレントディレクトリは'+#10+
CurrentStrings);
end.
────────────────────
実行結果例は次の通り
---------------------------
Curdircheck
---------------------------
カレントディレクトリは
C:\Temp\CurDirCheck
使用可能なドライブは
CDEGZ
それぞれのカレントディレクトリは
Cドライブ C:\Temp\CurDirCheck
Dドライブ 利用できません
Eドライブ E:\
Gドライブ G:\
Zドライブ Z:\
---------------------------
OK
---------------------------
Dドライブはメディアのささっていない実際のDVD-RAMドライブです
参考────────────────────
Delphi Acid Floor
http://www.wwlnk.com/boheme/delphi/vbtodel/daf0780.html
|