tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^6: VB6.0でデータをバイナリ処理
投稿日: 2010/02/23(Tue) 16:04
投稿者魔界の仮面弁士
> 対策 ファイルは開いてすぐに閉じます。やはり不十分ですよね
読み書きするファイルが、サーバー上の共有ファイルであるような場合には、
排他制御は特に重要だと思います。


> 読込にはlockが必要無いと思っていたのですがどうも大きなミスらしい
開く際に Lock を指定して排他オープンすれば、同時アクセスを完全にブロックできます。
もしもロックされているファイルを開こうとした場合、Open する際に実行時エラーが
発生しますので、それをプログラムからトラップすることができます。

一方、Shared にしていた場合には同時アクセスが可能となるため、
データを読み込んでいる最中に、データが編集されてしまう事もありえます。


> 末尾のゴミ
これを避ける場合には、
 (案1)常にファイルサイズが一定となるような固定長データで保持する。
 (案2)出力する際には、ファイルを作り直すようにする。
 (案3)ADODB.Stream で出力するように変更し、SetEOS メソッドで切り詰める。
などの対策があります。


> ちなみに書き込むデータは
> join関数で普段使用しない"|"や"^"でテキストデータを結合(?)して
> rw(0)="|ア行^あ^い^う^え^お|カ行^か^き^き^け^こ||||||"つぃます。
個々の要素内には、どのような文字を含めても OK です。
データ中に改行や NULL 文字を含めても構いません。
 RW(0) = "あ" & vbNullChar & "い" & vbCrLf & "う" & vbTab & "え"

ただし、vbNullString と "" は区別されないため、
 RW(0) = ""
として書き込んでも、結果は vbNullString になります。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。