タイトル : 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 になります。 |