4Dで4Dのデータファイルを作成する
| 日付 | 2009/11/16 |
|---|---|
| ID | 09-062 |
| バージョン | 11 |
| プラットフォーム | Win, Mac |
この記事は、最新ではないバージョンに関連した方法について解説しています。
最新のバージョンでは推奨されていないか、または他の方法で簡単に実現できる可能性があります。
4Dのビルドアプリケーションを起動した時に、アプリケーション利用者にデータファイルを新規に作成させたいという要求は当然のものです。そのような時、データファイルの無いビルドアプリケーションを配布してしまうと、時としてアプリケーション利用者は、アプリケーションフォルダ内にデータファイルを作成してしまうかもしれません。もしアプリケーションフォルダ内にデータファイルを作成してしまうと、アプリケーション自体のアップデートの時に、色々と不都合に見舞われることになりかねません。
こうした事態を防ぐためには、アプリケーションフォルダの外にデータファイルを作成させるようにプログラムする必要があります。データファイルが無いと動作しない4Dに、そのようなプログラムは可能なのでしょうか。
実現方法のヒントは、すでにあります。
上記の情報が言わんとするのは、ビルドアプリケーションではデータファイルを組み込むべきだと言うことです。ビルドアプリケーションにデータファイルが組み込まれていれば、4Dのプログラムは動作を開始できるからです。その上でプログラムから、新しいデータファイルを作成すれば良いのです。具体的には、次のようにな流れになります。
- 予め空のデータファイルをビルドアプリケーションに組み込んでおく
- ビルドアプリケーションが起動されたら現在使っているデータファイルのパスを取得
- データファイルのパスが組み込まれたファイルの時にはデータファイルをユーザに作成させる
作例は、この考え方で作成したのもです。
$path_folder:=Replace string(Get 4D folder(Database Folder);"\\";"\\\\") `アプリケーションフォルダのパスを取得
If (Match regex($path_folder+".*";Data file)) `データファイルがアプリケーションフォルダの中にあるか?
$include:=True `データファイルがアプリケーションフォルダに含まれるとき真
`データファイルがアプリケーションフォルダ内にあるとき
ALERT("データファイルを作成してください")
$ref:=Create document("";".4dd") `一度ダミーのファイルを作成
If (OK=1) `OKボタンが押されたか?
CLOSE DOCUMENT($ref) `ダミーファイルを閉じる
DELETE DOCUMENT(Document) `ダミーファイルを削除する
If (Not(Match regex($path_folder+".*";Document))) `ダミーファイルがアプリケーションフォルダの外に作られたか?
If (Document#"@.4dd") `ダミーファイルの拡張子は4ddか?
Document:=Document+".4DD"
End if
CREATE DATA FILE(Document) `データファイルを作成する
$include:=False
End if
End if
If ($include)
ALERT("データファイルが作成されませんでした";"ありゃまあ!")
End if
End if