ab.com コミュニティ
https://www.activebasic.com/forum/

ReadFileができない
https://www.activebasic.com/forum/viewtopic.php?t=1347
ページ 11

作成者:  おのさちま [ 2006年8月13日(日) 05:12 ]
記事の件名:  ReadFileができない

既出かもしれませんが検索で見つけられなかったので書かせていただきます

ActiveBasic Ver4.24.00を使って、Win32プログラミング講座の11.テキスト エディタを作る にあるコードを入れてみたのですが

このReadFileなのですが、どうしてもファイルが読めません
エラーも出ず、bufferはNULLのままです
マニュアルを見ていろいろ試したのですが、うまくいきません
対象ファイル、実行ファイルやAB自体のパスやドライブを変えてみても無理でした
このせいでずっとAB放棄していました

が!思いついて旧バージョンでためしてみたところ、Ver4.13.00とVer4.12.02では読むことができました
Ver4.11.03以前のものは壊れていますと出てプロジェクトが読み込めなかったのでためしていません
5.0も同じでNULLになってしまいます
これはなぜでしょうか?バグですか?
4.14から10バージョンも更新されてることからみて私の環境が特殊なんだと思いますが
旧バージョンを使うしかないのでしょうか
対処法か、ヒントでもわかる方いらっしゃいませんか

OS:WindowsXP Professional SP2
CPU:AthlonXP 1600+
HDD:40GB(Cドライブ)+200GB(E,F,Gドライブ)

作成者:  tak [ 2006年8月13日(日) 06:55 ]
記事の件名: 

変数 buffer は String 型ですね。これを BytePtr 型にしてみてください。
それから、型の変更に伴って buffer の初期化部分を書き換える必要があります
コード:
buffer = ZeroString(dwFileSize)
ではなく
コード:
buffer = malloc(dwFileSize)
ZeroMemory(buffer, dwFileSize)
としてみてはいかがでしょうか。
現在手元にテスト環境が無いので動作検証はしていませんが、あしからず。

String 型と BytePtr 型の互換性に関する問題です。
過去に String 型に対して大きな仕様変更があったことによる混乱が尾を引いているようです。

ちなみに String 型に関して、将来再び大きな仕様改訂が実施される可能性があります。

[参考]
http://www.activebasic.com/forum/viewtopic.php?t=996

作成者:  三毛CAT [ 2008年8月08日(金) 16:15 ]
記事の件名:  解決法

コード:
ReadFile(hFile,buffer,dwFileSize,VarPtr(dwAccessByte),ByVal 0)
を、
コード:
ReadFile(hFile,StrPtr(buffer),dwFileSize,VarPtr(dwAccessByte),ByVal 0)
にしたらうまくいきました。
バージョンは4.24.00

ページ 11 全ての表示時間は UTC+09:00 です
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/