掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ユーザによって登録されるデータの保存について (ID:3340)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
作成しているアプリ内で、ユーザーが設定(登録)したデータを 保存する必要があるのですが、その保存(と読み込み及び例外処理)の仕方について ご意見頂けたら幸いです。 簡単なデータ(例えば、チェックボックスのオン・オフなど)の場合には、 INI ファイルに、そのデータを保存することで解決しています。 より複雑なデータの場合には、適当な外部ファイルを作成して、 現在は保存を行っています。 それで、その複雑なデータを外部ファイルに保存する仕方についてなのですが、 例えば、ユーザーが電話帳を登録したい場合を考えて見ますと、 電話帳に記載される「名前」「電話番号」「その他」などの項目を 設定し、それを保存する場合には、どのように外部ファイルに書き込みを 行ったら、より良い方法となるのでしょうか? といいますのも、例えば、TStringList を用いて、 procedure SaveData(Name, Number: string); const Delimiter = '#'; var sl: TStringList; begin sl := TStringList.Create; sl.LoadFromFile('データを保存してあるファイル'); sl.Add(Name + Delimiter + Number); // デリミタで、名前と電話番号の境目の目印をつける sl.SaveToFile('データを保存してあるファイル'); sl.Free; end; とすれば、用意に保存でき、また、データを読み込む場合でも 上記のサンプルと同じような様式で、簡単にデータを取り込むことが できますが、以下の点において、このようなデータの保存は 汎用性に欠けると考えています。 ・ユーザーによって、故意にデータの書き換えが行われた場合の 対処の仕方を一意に決めることができない。 ・電話帳に、付加情報(例えば、特定の人物だけ、「その他」の項目を付け足したい等)がある場合、つまり、データ項目の増減などがある場合には、保存形式を分岐して 処理を行う必要がある。 などがあると思います。それで、現在検討しているのは、 TFileStream 等を用いて、 +---------------------+--------------------+ |データ情報(ヘッダ) | 具体的なデータ情報 | +---------------------+--------------------+ のように、ヘッダにデータの情報(上記の例でいけば、登録されている人数は 何人いるか、及びデータのサイズ等)を記述して、その直下に具体的なデータ情報 (名前、電話番号等)を記述して、ファイルに保存するようにできないかを 考えています。(さらに、ファイルをテキスト形式で保存するのではなく、 バイナリ形式(?)での、保存を考えています。つまり、秀丸などのテキストエディタで ファイルを開いても、中身に何が記述されているのかを分からないようにしたい) ただ、上記のような方法でも、ユーザーが設定を保存したファイルを開いてデータの 書き換えを行った場合には、その対処をする必要があるのですが…。 何か、ユーザーによって動的に設定されるデータの読み書きを行うに当たって、 どのような点を考慮すればよいかなどのご意見頂けたら幸いです。 よろしくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.