構造体や ポインタでつまづいています。
ファイルから データを取得して 構造体に入れようとしましたが うまく行かず
とりあえず 配列にしてみました。
最初は 自力で 配列に入れてましたが あっ ポインタ演算があるんだと思いやってみました。
コードは 簡単になりましたが これで 良いのでしょうか?
Dim backFile[23,512] as Byte
Sub getData()
Dim temp as string
Dim fp as BytePtr
Dim hList As HWND
fp=backFile
Open "c:\test.txt" For Input As #1
while Not Eof(1)
Input #1,temp
lstrcpy(fp,StrPtr(temp))
fp=fp + 511
Wend
Close #1
end Sub
backFile[23,512] は 512バイトの配列を 23個準備したつもりです
それで fpを 511加算すれば 良いだろうと 適当に進めたら 動作はOKなのですが、なんか あっちこっちで 型の変換アラームは出るし 不安です
もっと 安全な簡単な方法とかも あるのでしょうか?
ポインタを 使った演算が どうも・・・
コード: 全て選択
Dim backFile[511,22] as Byte'配列は0から始まるので、確保したい数-1を書いておく。
Sub getData()
Dim temp as String
Dim fp as BytePtr
Dim hList As HWND
fp=backFile
Open "c:\test.txt" For Input As #1
while Not Eof(1)
Input #1,temp
lstrcpy(fp,StrPtr(temp))
fp=fp + 512'ポインタは、必ず必要なだけずらす。
'例えば、1ずらしたい時には fp=fp+1 と書く。512ずらしたいのでfp=fp+512と書く。
Wend
Close #1
end Sub
それはともかく、command.sbpから型変換の警告が出てると思います。220行目周辺を
コード: 全て選択
Case _System_Type_String
_System_HeapStringFree(GetDWord(_System_InputDataPtr) As VoidPtr)
i2=lstrlen(buffer)
SetDWord(_System_InputDataPtr,_System_HeapStringAlloc(i2))
memcpy(GetDWord(_System_InputDataPtr) As VoidPtr,StrPtr(buffer),i2)
と書き換えればとりあえず静かになります。
標準ファイルからの型変換警告はいつもの事なので、あまり気にしなくていいと思います。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
これで良かったので安心です。
何故か ポインタを加算するのは 変だと考えていたので モヤモヤが 消えた感じです。
>Dim backFile[511,22] as Byte'配列は0から始まるので、確保したい数-1を書いておく。
カッコの中は 0~511と言う意味でしたか。解りました。初心者です。
>例えば、1ずらしたい時には fp=fp+1 と書く。512ずらしたいのでfp=fp+512と書く。
この方が解り易いと思います。
xxxxxx>と書き換えればとりあえず静かになります。
>標準ファイルからの型変換警告はいつもの事なので、あまり気にしなくていいと思います。
もう少し慣れたら 触ってみます
しばらくは 気にしないようにします。ありがとうです。
何故か ポインタを加算するのは 変だと考えていたので モヤモヤが 消えた感じです。
>Dim backFile[511,22] as Byte'配列は0から始まるので、確保したい数-1を書いておく。
カッコの中は 0~511と言う意味でしたか。解りました。初心者です。
>例えば、1ずらしたい時には fp=fp+1 と書く。512ずらしたいのでfp=fp+512と書く。
この方が解り易いと思います。
xxxxxx>と書き換えればとりあえず静かになります。
>標準ファイルからの型変換警告はいつもの事なので、あまり気にしなくていいと思います。
もう少し慣れたら 触ってみます
しばらくは 気にしないようにします。ありがとうです。