ページ 11

コンパイル時の警告

Posted: 2007年2月02日(金) 21:50
by wakaba
始めてから 間もない初心者ですが フォーラムの親切な回答のおかげで
パソコン起動時に1日1回だけ データを 世代毎に バックアップして
トラブル時に 復元するソフトを 作れました
ありがとうです

しかし ソフトは正常に動作しますが コンパイル時に次のような 警告が 多くでます

[警告] "SetFilePointer"の第1パラメータが、LongからVoidPtrに強制変換されています

コードは 次のところが 問題の箇所です

Dim buf as string
Open "c:\sss.txt" For Input As 1 'このファイルを開くステートメントが・・・

文字型が 悪いのかと 思い・・・
Dim FilePath[256] as Byte
lstrcpy(FilePath,"C:\sss.txt")
Open FilePath For Input As 1

以前の回答で 教えてもらったStrPtr関数でも・・・
Dim pBuf As BytePtr
Dim buf as string
buf ="C:\sss.txt"
pBuf=StrPtr(buf)
Open pBuf For Output As 1

これ以上は 思いつきませんでした
いずれも 警告が 発生します
以前警告がたくさん出ているコンパイルソフトが 何かの条件で 不具合
を起こし 困ったことがあります

ポインタという苦手な部分が関係しているかもしれませんが ヘルプや
このコミュを 探しましたが こんな単純な ”はまり方”は ありませんでした
なお バージョンは 4.24.00です
モヤモヤを 晴れにしたいです

Posted: 2007年2月02日(金) 22:34
by konisi
include\basic\command.sbp
を見てもらえば少し分かると思いますが、こいつが原因のはずです。

100行目近くにある

コード: 全て選択

Dim _System_hFile(255) As Long

コード: 全て選択

Dim _System_hFile(255) As VoidPtr
に書き換えてみてください。

他にも、prompt.sbpのLine文内やCircle文内でhOldBrushやhOldPenがLong型として宣言されていたりと、標準ファイルに警告が出る事が多々あります。
その時は、あまりうるさいようなら#strict指定を切るか、あるいは標準ファイルを書き換えてしまってください。

宣言を書き換えるか、あるいはAs演算子で患部を黙らせる、という方法が使えます。

String型の受け渡しで警告が出ている場合は手を付けない方がいいときも多いんですが。(確か3箇所はあった筈・・・。)

Posted: 2007年2月03日(土) 00:14
by wakaba
スミマセン
別な用をしていました

> 宣言を書き換えるか、あるいはAs演算子で患部を黙らせる、という方法が使えます。

初心者なもので 自分が 間違っていると思い 色々探し回って いました
このコミュにプログラミングは パズルを組み合わせるようなものだとの書き込みがあり
なにか パズルの断片を 探すのに必死で 本質に 気づかないでいました

> String型の受け渡しで警告が出ている場合は手を付けない方がいいときも多いんですが。(確か3箇所はあった筈・・・。)

そうなんだ!
準備されている それも ファイルを オープンするような 基本的な部分が 
ワーニングを 出すとは 思ってもいませんでした
まっ エラーでは ないし 気にせず AB2直線で 行く事に するヨ!

Posted: 2007年2月03日(土) 12:33
by wakaba
konisiさん ありがとうです

> String型の受け渡しで警告が出ている場合は手を付けない方がいいときも多いんですが。(確か3箇所はあった筈・・・。)

ソースにファイルオープンを 多く使っているので 警告が100以上出ていたので
少し心配になったのです(エラーはありません)

「”手を付けない方がいいときも」 の助言を参考に 調べてみました
ヘルプや 掲示板などによると ----
active basicのプロジェクトオプション→コンパイルオプションで
”厳密な型チェックを行う” の チェックを外せば 良い事が わかりました

しかし 自分の書いたソース部分に問題がある場合が 多いと思うので
チェックは 外さないことにしました

またシロウトの問題を解決してもらって 助かりました