「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@125) [低] [解決]
@125■ (#305) ファイルストリーム操作について - とど~ (2008-11-20 01:21) /中 未処理
【症状】
「ファイルAをモードBでファイルストリーム開く」にて、モード作・読・排他にて異常動作を起こす。
また、ファイルストリームの位置設定とバイナリ取得/設定とでアドレス表記が1ずれている。

【再現方法】
読で:
「Aを」の部分を認識できずエラーを出す。

作で:
-----------ここから-----------
ぱねるとはパネル
そのファイルドロップ許可=1

ぱねるについて
  ファイルドロップされた時は
    変数1=ドロップファイル
    変数1を作でファイルストリーム開いて変数2に保存
    変数2をファイルストリーム閉じる
-----------ここまで-----------
以上のプログラムにてファイルをドロップした際、パネルが新規に作成される。
その他のGUI部品にては未確認。
また元のファイルが既に存在する場合、ファイル内容は破棄されずただのReadOnlyになっている様子。(これについては仕様?)

排他で:
ファイルストリームの読み込みはできるが、書き込みが正常に動作しない。

アドレスについて:
以下の二つが同

 Aで$80にファイルストリーム位置設定
 Aで4をファイルストリーム読む

 Aの$81をDWORDでバイナリ取得

【要望】
ファイルストリームを開く際のモードについては正常に。
また、アドレスについてはバイナリエディタでのアドレスと一致していた方が扱いやすいと感じるので、できるならばファイルストリームのアドレスに統一して欲しい。

【バージョン】1.5092

【その他】アドレスについては全くの要望程度で、ファイルストリーム操作関連が修正していただければ解決とします。

(#306) RE:ファイルストリーム操作について - SWinX (2008-11-20 11:36) /中 調査中
・文字列定数は「」で囲みましょう。
・0から数えるか、1から数えるかは、命令や構文によってまちまちなのが現状です。
ユーザ側で確認しつつ気をつけて使うしかありません。

以前との互換性を破棄してでも統一すべし!というには根拠が薄いのでは。

(#310) RE:RE:ファイルストリーム操作について - とど~ (2008-11-22 00:41) /低 調査中
返信遅くなりまして申し訳ありません。

読、作については「」で囲むことによって対処できましたが、「排他」で書き込みができないことについては変わりませんでした。仕様かもしれませんが、読み書き共にできるモードが無く、排他アクセスできるだけで「読」とほぼ変わりないので疑問に思います。

アドレスについては軽率でした。
起点を0か1に設定するような宣言命令を加え、宣言しない場合は従来の仕様に準じるような作りにすれば互換性は保てるかと考えます。
ただ実装難度はなでしこ本体の作り次第かと思いますし、実装してもそれによる利は薄いでしょうから、モード選択の問題も「」でおよそ対応できたことを含めて優先度は低に変更しておきます。

(#311) RE:RE:RE:ファイルストリーム操作について - LSI (2008-11-23 19:46) /低 調査中
To: とど~さん

> 読、作については「」で囲むことによって対処できましたが、「排他」で書き込みができないことについては変わりませんでした。仕様かもしれませんが、読み書き共にできるモードが無く、排他アクセスできるだけで「読」とほぼ変わりないので疑問に思います。

なでしこのソースコードを読んだところ、モードは組み合わせて指定できるようです。
例を挙げると……

#書き込み専用+排他
FILEを「書,排他」でファイルストリーム開く。

#作成+読み書き可能+排他
FILEを「作,読,書,排他」でファイルストリーム開く。


「排他」とだけ指定された(「読」も「書」も指定されなかった)場合の動作については分かりません。
※おそらく、デフォルトの動作が「読」なのだろうと思いますが。


「ファイルストリーム開く」のソースコードは以下の場所にあるので、詳しくはそちらを参照してください。
nakofile.dllのソースコード(sys_file_h_open関数)
http://code.google.com/p/nadesiko/source/browse/trunk/hi_unit/dll_file_function.pas

(#312) RE:RE:RE:RE:ファイルストリーム操作について - とど~ (2008-11-23 23:17) /低 解決
>なでしこのソースコードを読んだところ、モードは組み合わせて指定できるようです。

そういうことでしたか! なるほど、確かに該当部分のソースも確認しました。
見返してみると質問掲示板ですれば良かったような内容ですね…(汗
自分の無知が元でお手を煩わせてしまい、申し訳ありませんでした。

バグと認識していた部分は解決いたしましたので、このスレッドは解決としておきます。
ご迷惑をおかけしました。

(#305)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能