16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"長いファイル名(フルパス)を取得5?"
この発言に対し以下のコメントが寄せられています
#01301 Fermion さん RE:長いファイル名(フルパス)を取得5?
■概要
パラメータとして渡されたファイル名(フォルダ名)を長いファイル名
(フォルダ名)に変換して返す関数とその使用例です。
ワイルドカードも使用できますが、その場合、条件に該当する最初の
ファイル(フォルダ)名を返します。ただし、"*.*" のような指定では
うまく行かないようです。 ((^^;)
■コンポーネント
Form1 に Edit1, Edit2, Button1 を適当に配置し、Button1.OnClick
等を以下のようにして下さい。
■使い方
Edit1 に短いファイル名(フォルダ名)を入力し、Button1 をクリック
して下さい。長いファイル名(フォルダ名)が Edit2 に表示されます。
■サンプルコード
//=========================================================================
{...略...}
implementation
{$R *.DFM}
uses
ShlObj, ComObj, ActiveX;
{**************************************************************************
Short path --> Long path Function
//************************************************************************}
function GetLongPath( ShortPath: WideString ): String;
var
pIMalloc : IMalloc;
pIShFDskTp : IShellFolder;
pidl : PItemIDList;
pchEaten,
dwAttributes: Cardinal;
Buffer : array[0..MAX_PATH] of Char;
begin
Result := ShortPath;
OleCheck( SHGetDeskTopFolder( pIShFDskTp ));
try
pchEaten := 0;
OleCheck( pIShFDskTp.ParseDisplayName( 0, nil, PWideChar(ShortPath),
pchEaten, pidl, dwAttributes ));
try
if SHGetPathFromIDList( pidl, Buffer ) then Result := Buffer;
finally
OleCheck( CoGetMalloc( MEMCTX_TASK, pIMalloc ));
pIMalloc.Free( pidl );
pIMalloc._Release;
end;{try..finally..}
finally
// pIShFDskTp._Release;
end;
end;
{**************************************************************************
Button1Click
//************************************************************************}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := GetLongPath( Edit1.Text );
end;
{...略...}
{**************************************************************************
初期化および終了処理部
//************************************************************************}
initialization
begin
OleCheck( OleInitialize( nil ) );
end;
finalization
begin
OleUnInitialize;
end;
{**************************************************************************
//************************************************************************}
end.
//=========================================================================
00/10/24(Tue) 00:28pm Fermion [KHF03264]
- FDELPHI MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 00/10/28 -
Original document by Fermion 氏 ID:(KHF03264)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|