メニューをスキップして本文へ


ここから本文

[Delphi] 一回で深い階層のディレクトリを作成する

  • 2003年12月18日(木) 14:42 JST
  • 投稿者:
  • 閲覧数
    2,509
多階層のディレクトリを作成するには親ディレクトリから1つずつ作成していきます。
しかしこれでは面倒なので、ForceDirectories 関数を使って一発で作成することができます。
また、APIを使っても一発で作成することができます。
ForceDirectories は Delphi のヘルプに解説があるので、以下では API を使用する方法を解説します。

使用するAPIは、「MakeSureDirectoryPathExists」です。
この API と ForceDirectories との違いとしては、ForceDirectories は作成したいディレクトリを引数に指定するのに対し、 MakeSureDirectoryPathExists はファイル名を指定します。ですので、最後に「」が無いとファイル名と見なされディレクトリは作成されません。

このAPIを使用するには以下の定義が必要です。
interface
  function MakeSureDirectoryPathExists(DirPath: LPCSTR): Bool; stdcall;
implementation
  function MakeSureDirectoryPathExists; external 'IMAGEHLP.DLL' name 'MakeSureDirectoryPathExists';
DirPath にはファイル名を指定します。 パスの最後のコンポーネントがファイル名ではなくディレクトリである場合、文字列の最後に円記号(\)を記述しなければなりません。 このAPIは失敗すると False を返します。 こんな感じになります
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not MakeSureDirectoryPathExists(PChar('c:temp')) then
    raise Exception.Create('Cannot create c:temp');
end;
補足
  1. 設定可能なファイル名の長さは200-260文字程度みたいです。
  2. APIなので String を PWideChar または PChar で型キャストする必要があります。
参照
  1. Microsoft Developer Network Library

トラックバック

このエントリのトラックバックURL:
http://www.blackcatlab.com/trackback.php/ProgramingFAQ_del0048
表示形式
コメント投稿

サイト管理者はコメントに関する責任を負いません。

サブメニュー1をスキップしてサブメニュー2へ

ログイン

ログイン

あくせすかうんたぁ

テーマ変更

広告


ここからサブメニュー2

サブメニュー2をスキップしてフッタへ


ここからフッタ