アプリケーションデータフォルダの取得

DELPHIの古いバージョンとかで

“C:\Documents and Settings\All Users\Application Data”とか
ディスクトップのフォルダとかをいわゆるスペシャルフォルダ系を取りたいときの方法です

const
    CSIDL_COMMON_APDATA = $0023;

function GetApplicationDataDir : string;
var
    Pidl: PItemIDList;
    pMalloc : IMalloc;
    tmpPath: array[0..MAX_PATH-1] of Char;
begin
    OleCheck(CoGetMalloc(1, pMalloc));
    OleCheck(SHGetSpecialFolderLocation(0, CSIDL_COMMON_APDATA, Pidl));
    try
        Assert(SHGetPathFromIDList(Pidl, tmpPath));
    finally
        pMalloc.Free(Pidl);
    end;

    Result := tmpPath;
    Result := Result + '\';

end;

CSIDL_COMMON_APDATAとかの定数,定義されてない感じなので
適時,定義してください

このスペシャルフォルダ系の定義は,こちらに一覧があります

関連記事