(AutoHotkey)(ファイル名と思われる文字列から ディレクトリと思われる部分抜き出す 編)

 現在 個人用の ライブラリを ぼちぼち ぼちぼち と 作っている最中なんですが
その中から ぼちぼち と 紹介していきます 笑)
なお 関数名が 極端に短いのが多いですが、 この手の 関数は 入れ子状 になり易いため あえて そういう風につけています

 「AutoHotkeyの 関数やコマンドを組み合わせれば APIとか使わなくても 出来るんじゃない?」と思われるかもしれませんが
「SplitPath の ダメ文字問題」 や 「関数として存在していない」 事などを考えると
ここは あえて自前で作った方が良さそうですよね
E2D(Expression, BufferSize = 1000)
{
	VarSetCapacity(Buf, BufferSize, 0x00)
	Buf := Expression
	DllCall("shlwapi.dll\PathRemoveFileSpecA", "Str", Buf)
	Return Buf
}
 第二引数 は 省略可能です、 省略時は 確保するバッファサイズが 1000バイトになります、 普段は 省略しても 問題は無いはずです
返ってくる ディレクトリ名の 最後には「¥」は付かないので注意です

 E2D の 名前の由来は ExpressionToDirectory という事ですが
何故 「Expression」という風に表現しているのかというと
この関数は 「必ずしも実ファイルが存在している必要は無い」からです
つまり 架空のファイル名「c:¥abcd¥xyz¥test.txt」を 入力しても 「c:¥abcd¥xyz」と 返ってきます
記事のタイトルに「ファイル名と思われる文字列から・・・・」と まどろっこしい表現をしているのは そのためです
よって この関数の性質上 実ファイル名である事を保証したい場合は 別途 ファイルの有無の確認を 行う必要があります

 また 相対パスの場合であっても 「.¥abcd¥xyz¥test.txt」は 「.¥abcd¥xyz」と 返ってきますし
ネットワーク の 場合であっても 「¥¥abcd¥xyz¥test.txt」は 「¥¥abcd¥xyz」と 返ってきます

 注意! preタグの外に 半角の¥を書くと \(バックスラッシュ) として表示されてしまうので 半角で「¥」 と書くべきところも 全角で書いてます