• ベストアンサー

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

noname#21649の回答

noname#21649
noname#21649
回答No.5

以下のバイナリ処理で読み取れるはず。保守ルーチンが入っているので要注意。OKに開発費3万円程度のソフトをくれてやることになりますが。 Public Function LineInputByte(FileNo%) As String ' Binary で open したファイル用 Line Input #FileNo%,A$ 'LineInputByte 改行コード固定(&h0A, &h0D, &h1A) 'LineInput02Byte 改行コード可変(選択した改行コードをLeCode(0)に返す) 'Open File1$ For Binary As #1 'Do Until Loc(1) = LOF(1) ' B$ = LineInputByte(1) 'Loop 'Close #1 Dim Bbyte As Byte Dim OBbyte As Byte FSize& = LOF(FileNo%) A$ = "": OBbyte = 0 ijcount& = 0 Do Until (FSize& = Loc(FileNo%)) ijcount& = ijcount& + 1 Get #FileNo%, , Bbyte If (Bbyte = 10) Or (Bbyte = 13) Or (Bbyte = 26) Then If Len(A$) > 0 Then Exit Do Else If OBbyte = 0 Then IB& = GetMSCodeByte&(Bbyte, &H40, MScode$, Haba&) If Haba& = 1 Then A$ = A$ + Chr$(IB&) Else OBbyte = Bbyte End If Else IB& = GetMSCodeByte&(OBbyte, Bbyte, MScode$, Haba&) If Haba& = 2 Then A$ = A$ + Chr$(Val("&H" + MScode$)) OBbyte = 0 End If End If End If Loop LineInputByte = A$ End Function Public Function LineInput02Byte(FileNo%, LeCode() As Byte, IER&) As String ' Binary で open したファイル用 Line Input #?,A$ 'LineInputByte 改行コード固定(&h0A, &h0D, &h1A) 'LineInput02Byte 改行コード可変(選択した改行コードをLeCode(0)に返す) 'dim LeCode(0 to 3) as Byte 'LeCode(1)=&h00 'LeCode(2)=&h0d 'Open File1$ For Binary As #1 'Do Until Loc(1) = LOF(1) ' B$ = LineInputByte02(1,LeCode(),IER&) 'Loop 'Close #1 Dim Bbyte As Byte Dim OBbyte As Byte LeCodeSU& = UBound(LeCode) FSize& = LOF(FileNo%) A$ = "": OBbyte = 0: IER& = -1 ijcount& = 0 Do Until (FSize& = Loc(FileNo%)) ijcount& = ijcount& + 1 Get #FileNo%, , Bbyte IA& = 0: IB& = 0 Do IA& = IA& + 1 If Bbyte = LeCode(IA&) Then IB& = -1 Loop Until IA& >= LeCodeSU& If (IB&) Then LeCode(0&) = Bbyte: IER& = 0 Exit Do Else If OBbyte = 0 Then IB& = GetMSCodeByte&(Bbyte, &H40, MScode$, Haba&) If Haba& = 1 Then A$ = A$ + Chr$(IB&) Else OBbyte = Bbyte End If Else IB& = GetMSCodeByte&(OBbyte, Bbyte, MScode$, Haba&) If Haba& = 2 Then A$ = A$ + Chr$(Val("&H" + MScode$)) OBbyte = 0 End If End If End If Loop LineInput02Byte = A$ End Function Function GetMSCodeByte&(Jis1 As Byte, Jis2 As Byte, MScode$, Haba&) '内部連続コードを返します。 'MsCode$には16進文字列でシフトJisコードを返します If (Jis2 <= &H3F) Or (Jis2 = &H7F) Then GetMSCodeByte& = Jis1 IA& = Jis1 MScode$ = NiHex$(IA&) Haba& = 1 ElseIf (Jis1 >= &H81) And (Jis1 < &HA0) Then IA& = Jis1 - &H81 IB& = Jis2 - &H20 If Jis2 >= &H80 Then IC& = 1 Else IC& = 0 GetMSCodeByte& = IA& * 188 + Jis2 + 192 - IC& Haba& = 2 IA& = Jis1 IB& = Jis2 MScode$ = NiHex$(IA&) + NiHex$(IB&) ElseIf (Jis1 >= &HE0) And (Jis1 <= &HFC) Then IA& = Jis1 - &HE0 IB& = Jis2 - &H20 If Jis2 >= &H80 Then IC& = 1 Else IC& = 0 GetMSCodeByte& = IA& * 188 + Jis2 + 6020 - IC& Haba& = 2 IA& = Jis1 IB& = Jis2 MScode$ = NiHex$(IA&) + NiHex$(IB&) Else GetMSCodeByte& = Jis1 Haba& = 1 IA& = Jis1 MScode$ = NiHex$(IA&) End If End Function Function NiHex$(IA&) 'IA& を16進2桁文字に書き換える B$ = Hex$(IA&) If Len(B$) = 1 Then B$ = "0" + B$ NiHex$ = B$ End Function

a12b12
質問者

補足

どもです。開発費3万円のコードだけあって すごいです。私じゃとても作れません。 私には参考にするというよりコピペです。^^; しかし、質問の内容よりかなり大掛かりになってきましたが、皆さんは保存の時このように毎回、大掛かりなコードを書いているのでしょうか??? 早い話が、openを使う人みんなは " を使われない などといいながらやっているのでようか・・・・ a = "<html><body><fontcolor="#00000">"    に入っている文字をただ保存して 読み込んで a = "<html><body><fontcolor="#00000">"    をtextに表示するだけで、これだけのコードを書かなければいけないというのがとても悲しくなりました。

関連するQ&A

  • 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; もしや・・・と言うのでもよいので助けてください。

  • 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に分けるようにすればいいと 思ったんです。 出来ますか@@???  

  • VB初心者です

    計算結果が"7"の時に限り、「当たり!」と表示される、ちょっと意味不明な計算機を作っています。 現在、下記のように書いてますが、何故かうまくいきません。(当たりが表示されない 何故でしょうか?お助けください。。m(_ _)m Private Sub Command1_Click() Label1.Caption = Str(Val(Text1.Text) + Val(Text2.Text)) Label3.Caption = "+" Label4.Visible = False '画像を隠す。 'いずれかの数字が「7」のとき、メッセージを表示する。 If Label1.Caption = "7" Then Label4.Visible = True End If End Sub Private Sub Command2_Click() End End Sub Private Sub Command3_Click() Label1.Caption = Str(Val(Text1.Text) * Val(Text2.Text)) Label3.Caption = "*" End Sub Private Sub Command4_Click() Label1.Caption = Str(Val(Text1.Text) - Val(Text2.Text)) Label3.Caption = "-" End Sub Private Sub Command5_Click() Label1.Caption = Str(Val(Text1.Text) / Val(Text2.Text)) Label3.Caption = "/" End Sub

  • テキストファイルを一行づつとる方法

    テキストファイルを一行だけとる方法は以下のとおりかと思いますが、最後の列まで一行づつとる場合はどうすればいいのでしょうか?教えて頂ければ幸いです。 Open "c:\data.txt" For Input As #1 Line Input #1, str Close #1

  • 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を使うのがよいのでしょうか?ご教示下さい

  • 一行だけ読込

    Perlでのファイルの読込なんですが、 open(IN,"A.txt"); while ($xx = <IN>) { print $xx;} close(IN) とするとA.txtファイルの読込をするんですよね? A.txtの中の一行だけを読込むというのはできるんでしょうか? (10行あったら5行目を読込み、という感じです。)

    • ベストアンサー
    • Perl
  • エクセルにてテキストファイル読み込みでエラー  

    いつもお世話になっております。 テキストファイル (test.txt)をエクセルマクロにてセルへの読み込みを したいのですが、なぜか エラーになります。 Cells(n, 1) = buf  でエラーのようです。 理由がわかりません。 教えてもらえないでしょうか 普通の文章なら読み込みできるのですが =  を使っているとエラーがでるようです。 test.txtの画像を添付します。 エクセルのマクロの内容は次の通り Sub テキストファイルをセルに転記() Dim buf As String, n As Long Open "C:\Users\a\Desktop\test.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf n = n + 1 Cells(n, 1) = buf Loop Close #1 End Sub

  • 文字列連結演算子を使った繰り返し(ループ)について

    Text1・Command1・Label1 と並んだBoxでText1に数字を入力しCommand1を押すと漢数字(一,二…)となるプログラムなのですが、一桁ずつ求めて行き最後に文字列連結演算子を使って求める場合はどのようにしたらよいのでしょうか? エラーが出るのでどこかが変なんだと思うのですが、何度みてもわからなくて。。。今途中の段階ですが当方がやったところまでを乗せておきますので。違うところや付け足すところなど指摘したり教えていただけたらと思っています。よろしくお願いします。 Private Sub Command2_Click() Dim a As Integer Dim b As String a = Val(Text1.Text) For x = 1 To 5 If a = 1 Then Label1.Caption = "一" ElseIf a = 2 Then Label1.Caption = "二" ElseIf a = 3 Then Label1.Caption = "三" ElseIf a = 4 Then Label1.Caption = "四" ElseIf a = 5 Then Label1.Caption = "五" ElseIf a = 6 Then Label1.Caption = "六" ElseIf a = 7 Then Label1.Caption = "七" ElseIf a = 8 Then Label1.Caption = "八" ElseIf a = 9 Then Label1.Caption = "九" Else Label1.Caption = "〇" sText1 = "1" & "2" & "3" & "4" & "5" & "6" & "7" & "8" & "9" sLabel1 = "一" & "二" & "三" & "四" & "五" & "六" & "七" & "八" & "九" End If End Sub

  • VB6.0 CSVファイル読み込みについて

    VB6.0について質問です。 CSVファイルの読み込みを行いたいのですがうまくいきません。。。 以下のソースのどこに問題ありますでしょうか?>< 14個のカンマ区切りのCSVファイルを読み込んでいますが ファイルのデータを変更するとインデックスが有効範囲にありませんというエーラーがでます。。。 ファイルは3行で構成しているのですがヘルプを参照したら複数行の場合はLINE Input #1, MyString(i)と書いてありました。 しかしやってみると行ごとのデータを取得してカンマ区切りで取得してくれませんでした。。。 以下のソースで実行すると改行部でエラーになるようです。 改行を無視するようなロジックを入れる必要があるのでしょうか? Dim MyString(), i Open App.path & "\" & CSV_filename For Input As #1 ReDim MyString(13) Do While Not eof(1) Input #1, MyString(i) Label4(i).caption = MyString(i) i = i + 1 Loop Close #1

  • ラベルに全てのテキストデータを読み込みたい

    メモ帳(.txt)に AAAA BBBB CCCC と書いて、これら3行をラベルに表示させたいのです。 Private Sub Form_Load()  Dim myText As String  Open "C:\myFile.txt" For Input As #1 Do While Not EOF(1) Input #1, myText Loop   Close #1  Label1.Caption = myText End Sub 上記のコードだと1行目のAAAAしか表示されません(泣) どなたかご指導宜しくお願いします。