リストボックスの内容をセーブし、ロード出来るようにしたいのですが、
過去ログなどを拝見させて頂いたりしながら、
以下のプログラムを書いてみたところ、
ロードしたときにリストボックスの一番上のアイテムが、
「・」という文字に変わってしまいました。例えば、
「りんご、みかん、オレンジ」という3項目がリストボックスにあるばあい、
それをセーブして、ロードすると、
「・、みかん、オレンジ」という具合になってしまいます。
これはどのようにすれば解決できるでしょうか?
どなたかご教示ください。
’セーブ
Dim itemindex As Long
Dim strData() As String * 20
ReDim strData(List1.ListCount - 1)
Dim listall As Integer
listall = List1.ListCount - 1
Open "sample1.dat" For Binary Access Write As #1
For itemindex = 0 To listall
strData(itemindex) = List1.List(itemindex)
Put #1, , strData(itemindex)
Next itemindex
Put #1, , listall
Close #1
’ロード
Dim listall As Integer
Open "sample1.dat" For Binary Access Read As #1
Get #1, , listall
Close #1
Dim itemindex As Long
Dim strData() As String * 20
ReDim strData(listall)
Open "sample1.dat" For Binary Access Read As #1
For itemindex = 0 To listall
Get #1, , strData(itemindex)
List1.AddItem strData(itemindex)
Next itemindex
Close #1
単にコーディングミスかなあという気がしたのですが、、
まずセーブで、
listall = List1.ListCount - 1
Open "sample1.dat" For Binary Access Write As #1
Put #1, , listall ’この1行がいりますよね??
For itemindex = 0 To listall
(以下省略)
ロードでは一度ファイルを閉じて、再度オープンしているので
また、1行目(つまりlistallの値)から読み直しているのが原因だと思います。
Dim listall As Integer
Open "sample1.dat" For Binary Access Read As #1
Get #1, , listall
Close #1 ’ここでファイルを閉じない!
Dim itemindex As Long
Dim strData() As String * 20
ReDim strData(listall)
Open "sample1.dat" For Binary Access Read As #1
’↑すでにオープンしているのでこのオープンは不要!!
(以下省略)
お答えいただきまして、ありがとうございました!
ファイルを閉じないのが秘訣なんですね。
コーディングミスは何度見ても気が付きませんでした。
まだまだ、勉強不足でした。
ご指摘の通りにしてみたところ、できました。
どうもありがとうございましたm(__)m
ツイート | ![]() |