|
|
||||
Tips > |
|||||
ExpandEnvironmentStrings で環境変数をパスに置換 |
更新 : 2010/06/12 |
||||
|
|
||
解説: システムの各種情報を保持している特別な変数に環境変数があります。この変数を利用すると、よく使うディレクトリのパス指定を省略したりできます。 たとえば、システムフォルダは、%SystemRoot% などで表されます(いろいろありますのでインターネットで検索してみてください)。 プログラミングをしていると、この環境変数から元の文字列を取得したい時があります。 Win32API の ExpandEnvironmentStrings 関数を使って目的を達成してみます。 使用例: 例では、Button1 をクリックすると、Edit1 に代入されたシステムフォルダの環境変数が Edit2 にパスとして表示されます。 コンポーネントは、Button と Edit 二つを適当に配置するだけです。 Edit1 には文字列 "%SystemRoot%" を代入しておいてください。 Button1 の OnClick イベントハンドラでは、ExpandEnvironmentStrings 関数に Edit1 の文字列を渡しています。 システムフォルダ環境変数がパスに変換され、Edit2 の Text に代入されます。 ちょっと寄り道: ExpandEnvironmentStrings は、環境変数文字列を展開して、文字列を定義された値に置き換えます。 DWORD ExpandEnvironmentStrings ( LPCTSTR lpSrc, // 環境変数を表す文字列へのポインタ LPTSTR lpDst, // 展開後の環境変数を表す文字列へのポインタ DWORD nSize // 展開後の文字列の最大文字数 ); 他の環境変数も使う機会があると思いますので、変換してみるといいでしょう。 //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { char buf[32]; ExpandEnvironmentStrings(Edit1->Text.c_str(), buf, sizeof(buf)); Edit2->Text = buf; } //------------------------------------------------------------------- |