アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB(2010)初心者です。

ボタンクリックで、テキストボックスに入力したデータをテキストファイルに
追加書き込みしていますが、同じデータは書き込めないようにしたいです。
下記コードにどのような記述を付け加えたら良いのでしょうか。

Dim fsFile As System.IO.FileStream = System.IO.File.OpenWrite("C:\List.txt")
Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(fsFile)

sw.BaseStream.Seek(0, System.IO.SeekOrigin.End)
sw.WriteLine(TextBox1.Text)
sw.Flush()
sw.Close()
fsFile.Close()

A 回答 (2件)

>下記コードにどのような記述を付け加えたら良いのでしょうか


ファイルに
(1)何のデータが入っているかを見て
(2)入力した物と同じでなければ書き込む
と云った処理が必要ですね

具体的にコードを書く際には
1.データとはどのような形式なのか
  ただのテキストなのか、カンマ区切りなどの複数要素を持つ物なのか
2.1に加え、同じデータとはどのように判断するのか
  完全一致なのか、それとも部分一致なのか
3.入力するデータは一行(一つだけ)なのか、複数行(複数データ可)なのか

に気を付けて作る必要があります。
    • good
    • 0

既に入力したデータを、使いやすいように保持しておくしかない。


これは理屈でそうなるもので、他にはどうしようもない。前に入力したデータが判らないと重複かどうかチェックしようが無い。
(1)その保持するやり方に、後に(といってもその作業が終わるまで)検索するに便利な構造を持ち込んで保持するか、そのままの順序で保持するかなど、考えられる。
またDictionaryなどの仕組みを持つ手もある。
http://wednesdaymoon.net/kzweb/articles/vbnet/ar …
エクセルなどは入力したデータはセルに保持されるので、なんらこういうことを考えなくて、検索するだけの問題ですが。
(2)もうひとつは、入力したデータをファイルになったものを読んで調べるかだが、普通はファイルをクローズしないと読めない場合もあり難しいが、ADOのダイナセットのようなもので対処できないかと思うが(VB.NETであるかどうか知らない)
(3)配列に入力されたデータで重複をチェックするキーに当たるデータをそれまでの分を保持して、次の入力時にその中に無いかどうかをチェックする。順次探索になるだろう。
これは割合思いつきやすい方法だろう。
(4)入力し終わってから、ファイルの中に重複をさがし、指摘する方法で、妥協(我慢)する方法とか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!