• ベストアンサー

VB6.0 sp5]テキストボックスと保存・読み込み

どもです。お願いします。 text1 ~ text15まであります。 multiline = trueですが一行のみです。 text1 ~ text4くらいまでに文字を入れて 保存を押します。 a = text1.text b = text2.text c = text3.text d = text4.text  ・(以下省略)    ・    ・ Open ***** For Output As #1 Write #1, a,b,c,d,e,f,g ・・・・・・ 次にさっき保存したのを読み込みます。  Open ***** For input As #1 input #1, a,b,c,d,e,f,g ・・・・・・ text1.text = a text2.text = b text3.text = c  ・(以下省略)   ・   ・ a = "あいうえお" b = "かきくけこ" と入っている場合、読み込んだときに text1 に「あいうえお」 と入るはずなのですが text1に 「あい」 text2に 「うえお」 text3に「かき」 text4に「く」 text5に「けこ」な感じで 何も入っていないテキストまでにも文字が分解されて入っていきます。 文字数の指定もしていないし、マルチラインもtrueなのであと原因がわからないですT_T; もしや・・・と言うのでもよいので助けてください。

  • a12b12
  • お礼率51% (152/297)

質問者が選んだベストアンサー

  • ベストアンサー
noname#6356
noname#6356
回答No.3

#1,#2のものですが、シーケンシャルファイルを使わずに、データコントロールを使ってmdbファイルを使うというのもひとつの手です。 そうすれば、記号の件は回避できると思います。

その他の回答 (3)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

カンマ区切り(CVS)ではなく改行区切りで保存するとか。 -- print #1,a print #1,b print #1,c -- line input #1,a line input #1,b line input #1,c --- Multiline=falseが前提です。

a12b12
質問者

お礼

どもです。 なんとか出来ましたが、保存読み込みで新たな 難題が、、、 新スレたてます。

noname#6356
noname#6356
回答No.2

"については Write# 文で、ファイルを書き込んだ場合の文字列の区切り文字として判断されてしまいます。 テキストバックスから文字を読み込んだ際に、"や,の文字があった場合何らかのコードに置換えて保存しておき読み込む際に再度元に戻すというコードを書けばいいんでしょうが、それができないのであれば、ほかの記号を使うしかないですね。 "を使うことはあきらめてください。

noname#6356
noname#6356
回答No.1

一度書き込んだファイル ******* をメモ帳などで開いてみてください。 正常であれば、カンマ区切りで、データが入っているはずです。 それが正常であれば次を考えましょう。

a12b12
質問者

お礼

「今日の昼ごはん」がtext1で任意で入れてもらいます。

a12b12
質問者

補足

どもです。m__m 例題を判りやすくと思い、逆に判りづらくなったようです、すみません。 text1などに入れる文章に"が入るとそこからの文章が次のtextに入ってしまうようなんです。 (この質問すれを立てるときはわからずでした) 普通に「あああ」でテストしたら大丈夫でした。ごめんなさい。 例えば タイトル名:「今日の”お昼ごはん”」な感じで 保存⇒読み込みすると、text1とtext2に分かれるようです。 しかし”をどうしても使いたいのですが、無理でしょうか?

関連するQ&A

  • VB 保存・読み込み2

    どもです。この間の質問の続きです。VB6.0 SP5 open の保存で文字の区切りに " , が使われるために text1 text2 text3 にそれぞれ文字を入れて保存してもその文字へ " ,等を使っている場合そこで区切られてしまい、text1に=あいう"えお と入力して保存⇒読み込みをするというtext1=あいう text2=えおと区切られてします問題でした。 そこでかなり考えてすこし良い案が浮かびました。 がコードが浮かびません^^; これをコードに変えられる方お願いします。 a = text1.text ←「あいうえお」と打ち込む。 b = text2.text ←「かきくけこ」と打ち込む。 c = text3.text ←「さしすせそ」と打ち込む。 open "test.txt" for output as #1 print #1,a & "<tes>" & b & " <tes> " & c で保存すると あいうえお<tes>かきくけこ<tes>さしすせそ と保存される訳です。 ※次に開きます。 open test.txt" for input as #1 この読み込みが判らないんですが、<tes>の 場所でそれぞれa b cに分けるようにすればいいと 思ったんです。 出来ますか@@???  

  • vb6.0 sp5]読み込みが出来ない・・・

    マルチラインのtext1に20行くらいの文章を 入れて、保存します。tes.txt a = text1.text そのtes.txt自体を開くとキチンと文章が入っています。 しかしプログラムからそのファイルを開くと。 Open "tes.txt" For Input As #1 Line Input #1, a Close #1 Label1.Caption = a 最初の一行しか表示されません。T_T;

  • プルダウンからテキストボックスに入力

    プルダウンから選択したものをテキストボックスに表示させています。 <script type="text/javascript"> function displayText(thatOption, textId) { var text1 = document.getElementById(textId); text1.value = thatOption.title; } </script> <SELECT onchange="displayText(this.options[this.selectedIndex], 'text1');"> <option value="1" title=""></option>  #空欄 <option value="2" title="A">A</option> #大文字 <option value="3" title="a">a</option> #小文字 </SELECT> <input type="text" value="" id="text1"> プルダウンを2個や5個など複数用意して、それぞれ選択したものをテキストボックス1行に 続けて表示させたいです。 上記のプルダウンをA~Eまで用意した場合、[A b C D e]と表示させたり、Cは選ばず 空欄を選択した場合は、[A b D e]と表示させる事は可能でしょうか? また、テキストボックスにvalue="ZZ"と初期表示を入れて、その後に 続くように表示させたいです。 [ZZ A b C D e]とする事は可能でしょうか?

  • チェックボックスの無効化、有効化

    あるサイトを参考にチェックボックスの無効化、有効化を実装したいと考えています。 ソースは以下の通りなのですが、この場合、name属性にそれぞれ異なる番号(t1、t2、t3やc1、c2、c3)が振られている必要がありますが、 これを同じnameに統一して動作させるには、どのように記述したらよいのか教えて頂けませんでしょうか? nameのtとcを統一したいのではなく、t1、t2、t3を番号抜きのtに統一、c1、c2、c3を番号抜きのcに統一したいと思っています。 <script type="text/javascript"> function fchk2(obj, name) { var frm=obj.form; if(obj.checked==true) { /* チェックボックスが選択されている場合は、 テキストボックスを有効化(false) */ for(var i=1; i<=3; i++){ frm.elements[name+i].disabled=false; } } else { for(var i=1; i<=3; i++){ /* 無効化する前に、入力値をクリア */ if(name=='t'){ /* テキストボックスの場合 */ frm.elements[name+i].value=""; }else{ /* チェックボックスの場合 */ frm.elements[name+i].checked=false; } /* 無効化(true) */ frm.elements[name+i].disabled=true; } } } </script> <form name="form2" action="#"> <label for="chk1"><input type="checkbox" id="chk1" name="chk1" value="1" onclick="fchk2(this,'t')" checked="checked" />テキストボックスの無効化・有効化を切替(チェックを外すと無効化)</label><br /> <input type="text" name="t1" value="テキストA" size="20" /> <input type="text" name="t2" value="テキストB" size="20" /> <input type="text" name="t3" value="テキストC" size="20" /> <hr /> <label for="chk2"><input type="checkbox" id="chk2" name="chk2" value="1" onclick="fchk2(this,'c')" checked="checked" />チェックボックスの無効化・有効化を切替(チェックを外すと無効化)</label><br /> <input type="checkbox" name="c1" value="1" />選択肢A<br /> <input type="checkbox" name="c2" value="1" />選択肢B<br /> <input type="checkbox" name="c3" value="1" />選択肢C </form>

  • チェックボックスの表示・非表示 動作

    はじめまして。 初めて掲示板を利用させていただきます。javascriptを勉強しまだ日が浅いのでご存知の方がいらっしゃれば教えてください。 今、チェックボックスを選択し選択した項目がアクティブになるようにしたいのですが、選択項目が重複すると以下のようになってしまいました。 A+AB=AB A+AB+E=ABE 個々までは問題なし。 既に全てのチェックが付いた上体で、ABCE-A=BCE となってしまい、 ABのチェックが入っていても、Aが消えてしまいます。 以下に現在のコードを張ります。 <script type='text/javascript'> <!-- function fchk2(obj, name) { var frm=obj.form; if(obj.checked==true) { /* チェックボックスが選択されている場合は、   テキストボックスを有効化(false)*/ for(var i=1; i<=3; i++){ frm.elements[name+i].disabled=false; } } else { for(var i=1; i<=3; i++){ /* 無効化する前に、入力値をクリア */ if(name=='t'){ /* テキストボックスの場合 */ frm.elements[name+i].value=''; }else{ /* チェックボックスの場合 */ frm.elements[name+i].checked=false; } /* 無効化(true) */ frm.elements[name+i].disabled=true; } } } //--> </script> <form name='form2' action='#'> <input type='checkbox' name='chk1' value='1' onclick='fchk2(this,"t")' checked>A<br> <input type='checkbox' name='chk1' value='1' onclick='fchk2(this,"t");fchk2(this,"b");' checked>AとB<br> <input type='checkbox' name='chk1' value='1' onclick='fchk2(this,"t");fchk2(this,"e");' checked>AとE<br> <input type='checkbox' name='chk2' value='1' onclick='fchk2(this,"c");fchk2(this,"e");' checked>CとE<br> <br> A<input type='text' name='t1' value='テキストA'><br> A<input type='text' name='t2' value='テキストB'><br> A<input type='text' name='t3' value='テキストC'><br> <br> B<input type='text' name='b1' value='テキストA'><br> B<input type='text' name='b2' value='テキストB'><br> B<input type='text' name='b3' value='テキストC'><br> <br> <input type='checkbox' name='c1' value='1'> 選択肢C<br> <input type='checkbox' name='c2' value='1'> 選択肢C<br> <input type='checkbox' name='c3' value='1'> 選択肢C<br> <br> <input type='checkbox' name='e1' value='1'> 選択肢E<br> <input type='checkbox' name='e2' value='1'> 選択肢E<br> <input type='checkbox' name='e3' value='1'> 選択肢E </form> よろしくお願いいたします。

  • VB6.0 でのテキストファイルの表示

    .net では、readstream でがばっととって、テキストボックス(読み取り専用)に表示しました。 これと同様のことをVB6.0でチャレンジしたのですが、テキストボックスに表示されるのは最初の一行だけでした。マルチラインのテキストボックス設置後 Private sub command1_click() Dim data as string Open "ファイルパス" for input as #256 Do while EOF(256) line input #256, data loop text1.text=data としたところ、ファイル内の最初の一行目に位置する「%」のみが表示されました。 readonlyもつかえないみたいなので、Listを使うのがよいのでしょうか?ご教示下さい

  • 再度読み込みは出来ないのでしょうか?

    各テキストボックスに値を入れて、 C11 = a11 * b11 + a12 * b21 + a13 * b31、 c12 = a11 * b12 + a12 * b22 + a13 * b32、 : : c21 = a21 * b11 + a22 * b21 + a23 * b31 c22 = a21 * b12 + a22 * b22 + a23 * b32・・・ としたいのですが、うまくロジックが思いつきません。 単純に式をずらずら書いたのですが、c12以降の欄がすべてゼロになってしまいます。 いい方法を教えてください。お願いします。 <head> <script> function kei(){ var form_a=document.getElementById('A'); var form_b=document.getElementById('B'); var form_c=document.getElementById('C'); var keic11 = 0; var keic12 = 0; : : keic11=parseInt(form_a.a11.value) * parseInt(form_b.b11.value) * parseInt(form_a.a12.value) * parseInt(form_b.b21.value) + parseInt(form_a.a13.value) * parseInt(form_b.b31.value); form_c.c11.value = keic11; keic12=parseInt(form_a.a11.value) * parseInt(form_b.b12.value) + parseInt(form_a.a12.value) * parseInt(form_b.b22.value) + parseInt(form_a.a13.value) * parseInt(form_b.b32.value); form_c.c12.value = keic12;     :     : } </script> </head> <body> <table border = 1> <form id = "A"> <tr> <td> <input type = "text" size = 5 name = "a11"></input> </td> <td> <input type = "text" size = 5 name = "a12"></input> </td> <td> <input type = "text" size = 5 name = "a13"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "a21"></input> </td> <td> <input type = "text" size = 5 name = "a22"></input> </td> <td> <input type = "text" size = 5 name = "a23"></input> </td> </tr> </form> </table> <table boeder = 1> <tr> <input type = "button" onClick="kei()" value = "×"></input> </tr> </table> <table border = 1> <form id = "B"> <tr> <td> <input type = "text" size = 5 name = "b11"></input> </td> <td> <input type = "text" size = 5 name = "b12"></input> </td> <td> <input type = "text" size = 5 name = "b13"></input> </td> <td> <input type = "text" size = 5 name = "b14"></input> </td> <td> <input type = "text" size = 5 name = "b15"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b21"></input> </td> <td> <input type = "text" size = 5 name = "b22"></input> </td> <td> <input type = "text" size = 5 name = "b23"></input> </td> <td> <input type = "text" size = 5 name = "b24"></input> </td> <td> <input type = "text" size = 5 name = "b25"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b31"></input> </td> <td> <input type = "text" size = 5 name = "b32"></input> </td> <td> <input type = "text" size = 5 name = "b33"></input> </td> <td> <input type = "text" size = 5 name = "b34"></input> </td> <td> <input type = "text" size = 5 name = "b35"></input> </td> </tr> </form> </table> 答え <table border = 1> <form id = "C"> <tr> <td> <input type = "text" size = 5 name = "c11"></input> </td> <td> <input type = "text" size = 5 name = "c12"></input> </td> <td> <input type = "text" size = 5 name = "c13"></input> </td> <td> <input type = "text" size = 5 name = "c14"></input> </td> <td> <input type = "text" size = 5 name = "c15"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "c21"></input> </td> <td> <input type = "text" size = 5 name = "c22"></input> </td> <td> <input type = "text" size = 5 name = "c23"></input> </td> <td> <input type = "text" size = 5 name = "c24"></input> </td> <td> <input type = "text" size = 5 name = "c25"></input> </td> </tr> </form> </table> </body>

  • テキストボックスのエンターキー無効

    VB6.0について質問いたします。 テキストボックスの入力の際に改行を強制的にできないように制御したいのですが次のプログラムでは上手くいきませんでした。 Private Sub Text_KeyDown(KeyCode As Integer, Shift As Integer) If vbcode = vbKeyReturn Then Exit Sub End If End Sub エンターキーを押したとき何も実行しないようにするにはどうしたらいいですか? テキストボックスはスクロールバーを設置してMultiLine プロパティをtrueに設定しています。

  • テキストの読込について

    あいうえお かきくけこ さしすせそ ↑のような中身のテキストファイルを読み込んで、 あいうえおかきくけこさしすせそ ↑のように、改行をなくして新規テキストに出力する プログラムを作成中なのですが、上手くいかず 困っています。 改行を無視した取り込みは出来るのでしょうか? もしくは、LineInput等で読み込んだ後、 改行を取り除くような処理をするのでしょうか? 下記は、現在まで作ったプログラムなのですが、 これだと、改行も同時に取り込んでしまっています。 Private Sub Command1_Click() Dim sData As String Dim FileName As String CommonDialog1.Filter = "テキスト|*.txt|全てのファイル|*.*" CommonDialog1.ShowOpen FileName = CommonDialog1.FileName Open FileName For Input As #1 Do Until EOF(1) Line Input #1, sData Loop Close #1 環境は、WindowsXP、VB6.0エンタープライズです。 以上、宜しくお願い致します<(_ _)>

  • エクセルから外部テキストの置換をしたいです

    お時間があるかた、どうぞご教授下さい>< ================================ Dim FT As String Open "C:\1.txt" For Input As #1 Open "C:\2.txt" For Output As #2 Do While Not EOF(1) Line Input #1, FT FT = Replace(FT, ">", "\n") Print #2, FT Loop Close #1 Close #2 ================================ というマクロをエクセルで書いたのですが、テキスト上では>が\nに変換されているだけです。 テキストのほうで、ある文字(今回は>)を『改行』するにはどうしたらいいのでしょうか? エクセルのマクロから出来るようにしたいのです。 よろしくお願い致します。

専門家に質問してみよう