VB6.0で日記のソフトを作ろうとしているのですが、
データを書き込む時に困ったことが起きてしまい
悩んでいます。ご教授頂けたらと思いカキコしました。
データの形式は
・日付
・内容
という形です。
日付をListboxに表示し、それに対応した内容をを別のTextboxに表示したいのですが、どういうアルゴリズムで読込を行えば良いのでしょうか?
日付としてのフラグとして「@」を行頭に入れています。
また日付の行はLine Inputで読み込んでいます。
と、ここまで日付をListboxに表示していく所まで出来たのですが、
内容をTextboxに表示させるには、どうしたら良いでしょうか?
参考にすると良いサイト等・的確なアドバイスを是非よろしくお願いいたします。
光
Line Input #x,dammy
List1.AddItem dammy
Do Until EOF(x)
Line Input #x,dammy
Text1.Text = Text1.Text + dammy + VbCrLf
Loop
Close #x
とか
あ、ファイルをOpenしてあって、テキストボックスがクリア(Text1.Text = "")してあるという仮定ね
まぁ他にも工夫は必要だろうね
通ってみた さん>
レスありがとうございます。
・日付
・内容
・日付
・内容
・日付
・内容
ってデータの場合、上手くListboxに日付だけ出ないんですが
どうしたら良いでしょうか?
あと、Listboxをダブルクリックした時に、
Private Sub List1_DblClick()に内容を表示したいのですが、
実際にはどのように書いたら良いのでしょうか?
一度、読み込んで配列にプールしておかなければならないのでしょうか?
実際に長い内容のデータだった場合には、String型でも問題ないのでしょうか?
質問ばかりで申し訳ありません。
VBは独学で3年位です。
よろしくお願いいたします。
データの形式を変えた方がいいのでは?
ファイル名を日付にして、中身を本文にして1日1ファイルにした方がいいと思うが
現状のデータ形式でやるとして、一応案を。
データを書き込む時に、本文の最後の行に「@End」というような終了データを加える。
Do Until EOF(x)
'日付
Line Input #x , dammy
List1.AddItem dammy
'本文
Do
Line Input #x , dammy
If Left$(dammy , 4) = "@End" Then
Exit Do
End If
Loop
Loop
Close #x
こんな感じ。
内容表示は、Private Sub List1_DblClick()内でLine Inputで「@End」が選ばれた日付の場所の回数来るまで読み込んでやる
そこから以下のようにすればいい
Do
Line Input #x , dammy
If Left$(dammy , 4) = "@End" Then
Exit Do
End If
Text1.Text = Text1.Text + dammy + VbCrLf
Loop
本文は配列にいれるといいかもしれません。
コレクションでもいいかも。
Private strDiary() As String
Private Sub ReadDiary()
Dim iFileNo As nteger
Dim strFileName As String
Dim strBuffer As String
Dim i As Integer
List1.Clear
Erase strDiary
i = -1
iFileNo = FreeFile
strFileName = "C:\日記.txt"
Open strFileName For Input As #iFileNo
Do Until EOF(iFileNo)
Line Input #iFileNo, strBuffer
If Left$(strBuffer, 1) = "@" Then
List1.AddItem Mid$(strBuffer, 2)
i = i + 1
ReDim Preserve strDiary(i)
Else
strDiary(i) = strDiary(i) & strBuffer & vbCrLf
End If
Loop
Close #iFileNo
End Sub
Private Sub List1_DblClick()
Text1.Text = strDiary(List1.ListIndex)
End Sub
通ってみたさん
LESIAさん
ありがとうございます。
具体的なソースを拝見して、自分なりに読み解きながら、
いままで、プログラムを組んでいました。
動的配列を用いてPreserve付けて配列の内容を維持しながらって所が
すごく勉強になりました。今までは無理矢理動かしていた部分もあったので。
あと
List1.AddItem Mid$(strBuffer, 2)
これで、2文字目から終端まで取れることも初めて知りました。
完成に至りましたので、ご報告とともにお礼を申し上げます。
本当にありがとうございました。
ツイート | ![]() |