• 締切済み

こんな場合はどうすればいいの?

あるフォームにコントロール配列のテキストボックスを10個くらい置いて おきます。 テキストファイル(.txt)から文字を読みとり一行一テキストボックスに格納していきます。 テキストボックスは改変可能でつねに変更されます。 あるテキストボックスには文字があったり、別のテキストボックスには文字がなかったり。 ここから質問です。 フォームを閉じる際、同じテキストファイルに改変したテキストボックスの内容を格納します。 テキストファイルの内容を全部クリアして書き込みしていくのがいいのでしょうか? なにかすっきりしたやり方があれば教えてください。 VB6.0でスキルはLowです。よろしくお願いします。

みんなの回答

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.3

ファイル操作については、手持ちのMSDNでFreeFile関数を調べてみるべし! わからなかったらここのBBSで調べるべし! ファイルの変更されたかどうかは、各テキストに書かれたタイミングで各テキスト.Tagに記しておくと、変更されたかチェックを行いやすい。 コマンドボタンを押されたタイミングで行うか、あるいはQueryUnloadかUnloadイベントでチェックを行ったら言いと思うぞい

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問の意味がよく捉えられなかった。 (1)>テキストファイル(.txt)から文字を読みとり一行一テキストボックスに格納していきます。 ・テキストボックスの貼り付け数が10個として、ファイルのレコードは10個以上あるのか。全部読みこんでも 10レコード以内なのか。文章内の1センテンスのように 関連のない・同列的なものなのか、あるいはテキストボックスの10個のデータは、1人分の名前・住所・電話番号等のようにセット性のあるものなのか。 (2)>テキストボックスは改変可能でつねに変更されます。 ・テキストボックスの「テキストの内容が」操作者が「改変可能」で、例えば変更するかも知れないと言うことか。 (3)>あるテキストボックスには文字があったり、別のテキストボックスには文字がなかったり。 ・「文字がなかったり」とは、テキストファイルに空白レコードがあることがあるとか、操作者が削除することがあるということか。例えば携帯電話番号のように持ってない人がいるとか。 (4)>フォームを閉じる際、同じテキストファイルに改変したテキストボックスの内容を格納します。 ・レコードが10レコード以上あれば、次の10レコード を読みに行く時、直前10レコード分の変更後結果は どうにかしなければならないはずだが、どう考えているのか。 (5)>テキストファイルの内容を全部クリアして書き込みしていくのがいいのでしょうか? ・この意味が不明。現状を書き「出し」して、次の10レコードを読みこんだらテキストボックスの前の内容は消える。ただ最後は10レコード未満があり得るので先にテキストボックスの内容をクリアしておく。 (6)>「書きこみ」 ランダムファイルを除き、単純であるテキストファイルなどは、インプットファイルとアウトプットファイルは 別物であることが認識していますか。別ファイル名、ディスクの記憶エリアも別のはず。

zihard99
質問者

お礼

回答ありがとうございました。 わかりにくい質問で失礼しました。やはりプログラムを人に説明するのはむずかしいですね。 (1)について。関連のない同列的なものです。 (2)について。テキストボックスのテキストの内容を操作者が「こんにちは」や「徳川 家康」のように自由に改変できます。変更もOkです。 (3)操作者はテキストの内容をクリアすることができます。削除だと1行削除という印象ですけど、改行コードは残るのでクリアになります。 ある時点で「徳川 家康」とテキストボックスにあってもそれをDeleteキーで消せます。ただ、改行コードは残しておきます。 (4)これはちょっとわからないですが、テキストファイルの10行分しか行は使用しない予定です。 その10行がたとえば・・・ こんにちは 徳川家康 さむらい 東京 武蔵村山 : と入っているとすればこれらはどんなふうにも操作者が改変可能です。 改変後。 こんにちは 織田信長 東京 古代 武蔵村山 : となるかもしれません。この変える作業は操作者はテキストファイル上で行うのではなく10個おいたテキストボックスで変更できます。 (5)読み込んだらテキストファイルの内容はクリアされるんでしたっけ?調べてみます。 (6)ちょっと難解です。 イメージが伝わらなければ補足します。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

VBの場合は、作成時の内容がデフォルトとなります。 普通は、起動時にテキストボックスの内容をクリアします。

zihard99
質問者

お礼

回答ありがとうございました。 テキストファイルの内容はセーブデータなので保存します。 これをファイル操作で行おうとしています。

関連するQ&A

  • vb2008 コントロール配列

    VB6からVB2008へ移行を検討しているものです。 そこで質問なんですが、VB2008でコントロールの反復処理はどう処理すればいいのでしょうか? VB6の時はコントロール配列を使用して、ForNextで繰り返せばそれらしいことはできました。VB2008はコントロール配列がサポートされていないのでどうすればいいかわかりません。みなさんはどう反復処理を行っているのか教えていただきたいと思います。 具体的な処理として、テキストボックス1~10があり、そのテキストボックスの内容を1~10の順番で、テキストボックス11~20に格納する。以上、宜しくお願いします。

  • vb2010でテキストファイルの1行置きの読み込み

    VB2010です。 フォームにリストボックスとコマンドボタンがあります。 コマンドボタンをおしたら”C:\test.txt”の内容を2行目から一行おきにリストボックスに 表示させたいのですが、どのようなコードを書いたらよいのでしょうか? test.txt内容 aaa あいうえお 123 かきくけこ 456 さしすせそ 789 リストボックスには あいうえお かきくけこ さしすせそ と表示させたいです。

  • txtファイルから読み取った文字列の処理について

    お世話になります。 終わる文字列を表す「EOS」は、VBでどうやって処理しますか? ファイルの内容: 。 記号-句点 EOS EOS   記号-空白 新 接頭詞-名詞接続 VBプログラムで一行一行を読み取って、 配列へ格納することで、 EOSの行にどうやって処理するでしょうか 以上、宜しくお願いいたします。

  • 文字列の取得(BCB6.0)

    初歩的な質問なのですが・・・ テキストファイルから文字列を配列に格納したいです。 テキストファイルからTStringListには取得できているようなのですが。。。 テキストファイルの形式が 文字1 OFF、文字1 ON 文字2 OFF、文字2 ON     … となっており、コンマで区切って2次元配列に格納したいです。 どなたか宜しくお願い致します。 auto_ptr<TStringList> xSList(new TStringList()); xSList->LoadFromFile("D:\\sample.txt"); for(int i=0; i<=xSList->Count; i++) { AnsiString str = xSList->Strings[i];     …(ここで2次元配列に格納したい)

  • 使用者の入力方法について

    VB初心者ですが、VB6.0を使っています。 例えばテキストボックスの内容を 使用者から変更不能にするとき、 例えばtxt~.Enable=falseで指定できると思いますが、 実行ファイル(exeファイル)を作成した後、 1回目に使用者がその実行ファイルを起動すると、 あるフォームにテキストボックスとチェックボックスとボタンが現れ、 その使用者がテキストボックスに書き込み、チェックボックスにチェックしてボタンを押せば、 その後その実行ファイルを終了した後、いくら起動してもテキストボックスの内容を変更不能にしたいのですができるのでしょうか? つまり、ワンタイム入力?とでもいうのでしょうか? 一回ユーザが起動時に入力すれば、その後、実行ファイルを再度起動してもユーザ変更できないようにすることはできるでしょうか? 以上、ご教示ください。 よろしくお願いいたします。

  • 検索した文字列がある行を検索するには

    OPEN "A.txt" QWER gohjoij OPEN "B.txt" OPEN "QWERT" Write A.txt jortyu end と書かれたテキストファイル(ファイル名を"ABC.txt"とする。)があるとします。これを 1.OPEN "*.*"(*=ワイルドカード)という文字列の*.*のみに絞る 2."1."の内" "の中に、"."が無い文字列は無視する うえでリッチテキストボックス1に出力するようにします。リッチテキストボックス1には A.txt B.txt と出力されました。これをさらに[A.txt B.txt]がある行全体を、 1.別のリッチテキストボックス(リッチテキストボックス2)に出力する やり方がわかりません。この例だと、リッチテキストボックス2には OPEN "A.txt" OPEN "B.txt" Write A.txt jortyu と出力したいです。今のスキルだと到底作れそうに無いので、どなたか教えてください。

  • Objective C(iPhone SDK)でテキストファイルから一

    Objective C(iPhone SDK)でテキストファイルから一行毎データを読み出す方法を教えてください. つい最近Objective-Cを始めた初心者です. サーバ上にあるテキストファイルを読み込み,一行ごとデータを取り出し,その一行ずつ取り出したデータをTableViewの項目として表示したいと思っています.現在コンパイルが出来ているのは, NSString* text; NSString* path = @"(URL)test.txt"; NSError* error; text = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error]; までです.また,読み込むテキストファイルの内容は 0001 0002 0003 0004 [EOF] となっています.このデータの一行ずつを配列に格納する方法を教えてください,よろしくお願いします.

  • ASCIIコードを文字に変換したい

    環境はVisualStdio.Net 2008のC++ Windowsフォームアプリケーションです。 C++の経験はまったくありません。 unsigned char型の配列 box[12]の中に既にアスキーコードでデータが格納されています。(例:box[0] = 48'0') これをtextbox->textにアスキーコードではなく文字で格納し、実行時に画面で確認できるようにしたいのですが、 (char)でキャストしてもfomat()で%xや%cにしても「0」でなく「48」で出力されてしまいます。 調べたらVBにはchrという関数があるみたいなんですが、これと同じ機能を持つ関数はVC++にはないのでしょうか?

  • テキストファイルの各行を配列に格納するには?

    お世話になります。vb6でテキストファイルを読み込み、各行を配列に格納するコードを教えて下さい。

  • 【設計】vb.netでファイルを読み込みDB登録を行う

    すみません、vb.netで開発を行うにあたり設計に詳しい方が いらっしゃいましたらご教授願います。 開発する機能はタイトルの通り、txtファイルからデータを読み取り 内容をデータベースに登録するというものですが 現在、開発するにあたり二つのロジックを思いついており どちらが適切か迷っております。 (1) あらかじめtxtファイルの内容を全てリードし配列等の一時変数に退避   ファイルリード終了後、配列に格納されたデータを1件ずつ登録 (2) txtファイルの内容を1件リードするごとにデータベースに登録 開発環境は、vb.net、Oracle です。 txtファイルに格納されているデータ量はファイルにより様々ですが 多くても2万件が予想されます。 迷っている理由としては、 (1)は2万件のデータ量を配列に格納したとしてメモリが耐えれるかどうか? (2)は、1件ずつ読込みデータベースに登録するとなると  その分ファイル及びデータベースへのアクセス時間が長くなり  負荷がかかるのでは? という、懸念事項が考えられ迷っております。 上記、二つの開発手法の内どちらがベストか または、上記以外にベストなロジックがあればご教授お願い致します。

専門家に質問してみよう