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