クロスプラットフォームアプリケーションでパス名を記述する
日付 | 2010/10/27 |
---|---|
ID | 76181 (英語原文参照) |
バージョン | v12 |
プラットフォーム | Mac/Win |
4D v12では, プラットフォームの違いを考慮したプログラムがずっと書きやすくなりました。
たとえば, プラットフォームに関係なく, 特定の場所にエクスターナルデータベースを作成したい場合, 次のようにしてパス名を作成することができます。
はじめに, プラットフォームに関係なく, POSIX形式で目的のパス名を定義します。続いてプラットフォームを特定します。Convert path POSIX to systemコマンドは, POSIXパスをシステム固有のパスに変換するコマンドですが, このときWindowsではルートドライブ名が返されないので, System folderで取得したそれを追加します。
$Path_T:="/myDirectory/" PLATFORM PROPERTIES($Platform_L) If ($Platform_L=Mac OS) $Path_T:=Convert path POSIX to system($Path_T) Else // Root may not be the "c" drive // $Root_T:=System folder $Ndx:=Position(":";$Root_T) $Root_T:=Substring($Root_T;1;$Ndx) $Path_T:=$Root_T+Convert path POSIX to system($Path_T) End if
次にパス名の存否を確認し, 存在しなければ新しいフォルダを作成します。4D v12では, ダイナミック定数Folder separatorをパス名の構築に活用することができます。
If (Test path name($Path_T)#Is a directory) CREATE FOLDER($Path_T) End if $Path_T:=$Path_T+Folder separator+"Externals"+Folder separator If (Test path name($Path_T)#Is a directory) CREATE FOLDER($Path_T) End if $Path_T:=$Path_T+"myExtDB"
最後に, このパス名でSQLを実行することができます。
Begin SQL CREATE DATABASE IF NOT EXISTS DATAFILE :$Path_T; End SQL