• ベストアンサー

変数の頭「#」の意味

VB初心者です。 VB5のOPEN関数等で見かける #変数名 の#はどういう意味でしょうか? ヘルプを見ると「省略可能」とありますが・・・ 指定した場合に何か意味を持つものなのでしょうか? 例 intFileNo = FreeFile Open "test.txt" For Input As #intFileNo

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

  • ベストアンサー
  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.3

ファイルをオープンするとき「Open "test.txt" For Input As #1」のように 番号を付け、以後のRea/Writeはその番号を用いて、「print #1,"ABC"」の ように行います。この時、その番号のところを変数にして「#intFileNo」のように 書くことができます。(#はファイル番号を表します)

snoguthi
質問者

お礼

結局、#自体の指定が意味を持つわけではない(省略しても何も変わらない)ということですね。 関数の末尾の$のように、指定することで処理効率が上がったりするのかな? とか思っていたのですが。 どうもありがとうございました。

その他の回答 (2)

回答No.2

No、ナンバーの意味で理解していました。 > intFileNo = FreeFile 使えるファイルNoを、intFileNoの変数にセット > Open "test.txt" For Input As #intFileNo "test.txt"をファイルNo.intFileNoでオープンする。 > 指定した場合に何か意味を持つものなのでしょうか? あると、無いとでは、特別な意味は無いと思いますが、ソースを理解するにはあった方が良いのでは?

snoguthi
質問者

お礼

ありがとうございます。 なるほど、「#変数(番号)」を「No.変数(番号)」とよみかえればコードが分かりやすい、ということですね。 #の指定で(実行結果が)変わるというわけではないということでしょうか。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

print文で出力先を指定するために、「print #1 ...」みたいな構文が導入されました。 なんで#がついたかというと、「print 1」では、ファイルナンバー1に出力するのか、単に1を出力するのか、文法的に曖昧になってしまうからです。 これにあわせて、open文にも#を付けるように文法を定義したのだと思います。 以上、当てずっぽう。

snoguthi
質問者

補足

人間が見やすくするために#をつけてもよい、ということでしょうか?

関連するQ&A

  • VB5でCSVデータをAccess97のDBへセット

    普段はVB.NETの開発をすこししているのですが VB5のプログラムの修正の依頼が来て困っています。 CSVのデータをVB5でAccess97のDBへデータセットしたいのですが VB.Netでは同様のプログラムを作成した事があるのですが VB5は全然仕様が違うので困っています。 VB5でCSVを読み込んで配列にセットするにはどのように したらいいのでしょか?CSVを行で読み込むところは なんとか調べてわかりましたが、VB5ではSplitや配列が使えそうに ないのでどのようにしたらいいのかわかりません。 よろしくお願いします。 現在のソース Dim strTextLine As String Dim strTxtDat As String intFileNo = FreeFile Open "c:\infile.csv" For Input As #intFileNo Do While Not EOF(intFileNo) Line Input #intFileNo, strTextLine Loop Close #intFileNo

  • テキストファイルを読み込み 偶数行の特定の文字を置換するには?

    お世話になります。 vb6なんですけどテキストファイルを読み込んで 偶数行のある文字を置換したいんですけど このサンプルをどういう風に改変して偶数行の文字列をある文字列に 置換するコードを書いてよいのかわかりません。 置換するのはreplace関数を使うと思うのですが。 教えて下さい。お願いします。 Dim n As Long, tmp As String n = FreeFile Open "D:\Test.txt" For Input As #n Line Input #n, tmp Close #n

  • VBEで#1の意味は?

    VBEで、 Open "mafile.txt" for input as #1 とあるとき、#1は何を意味しているのですか?

  • VB6で特定フォルダのCSVファイルを指定して開く

     お世話になります。  ある株価を記すCSVファイルを読んで、配列格納しようと下記プログラムを書いてみましたが、 この状態では「読み込み対象のファイル」が「このVBプロジェクト」と同じフォルダに入っていなければならないようです。    そこで C:\IR_NK\USDJPY_20071010.csv の USDJPY_20071010.csv を読むというように、「別のフォルダのファイル」を読み込むように書き換えたいです。  この場合、どのように書けばいいか教えて欲しいです。 Private Sub C_FJU() Dim H_R(2) As Integer Dim HI_R(2, 8000) As String Dim intFileNo As Integer Dim strTextLine As String Dim strTxtDat As String intFileNo = FreeFile Open "USDJPY_20071010.csv" For Input As #intFileNo Do While Not EOF(intFileNo)  Input #intFileNo, strTextLine H_R(0) = H_R(0) + 1 HI_R(0, H_R(0)) = Trim(strTextLine) strTxtDat = strTxtDat & strTextLine & vbCrLf Loop T_HYO.Text = strTxtDat  Close #intFileNo End Sub

  • webBrowser変数Aじゃだめなの?

    例文 Dim filenumber As Integer filenumber = FreeFile Dim A As Integer A = 1 Open "\accsess.dat" For Input As filenumber Do Until EOF(filenumber) Input #filenumber, accsess WebBrowserA.Navigate accsess A = A + 1 Loop accsess.datからURLを読み込んでbrowserに表示したいのですが、webbrowserAの変数Aの部分が邪魔してうまくいきません。 表示するだけなら、他にも色んな方法があると思いますが できれば変数としてBrowserをあやつりたいです。 どうすればいいのでしょうか?

  • VB6 「Line Input」でのリークについて

    VB6での「Line Input」命令使用時のメモリリークについて教えて下さい。 1分毎に3600行のCSVファイルを読み込むプログラムを作成しています。  (CSVファイルは1行500文字程度) 以下の【パターン1】は作成したプログラムの1部ですが、 (1)を3600回ループ時にパフォーマンスモニタでの「Private Bytes」が増加してしまいます。   (1ループ毎に増加せず、数十回ループする毎に増加します。) 試しに【パターン2】を作成し、CSVファイルはオープンのみ行い、 読み込みは行わずに、500文字の文字列が入った変数をコピーした場合は、 「Private Bytes」は増加しません。 基本的に違いは(1)と(2)の箇所だけなのですが、 「Line Input」命令の使用方法などで間違っている箇所があるのでしょうか? ご存知の方、教えて下さい。お願いします。 【パターン1】 Private Sub read_Timer() Dim i As Long Dim CsvDataBuf(3600) As String 'CSV読込み変数 Dim FP As Integer 'ファイル番号 (省略) : FP = FreeFile Open "C:\test.csv" For Input As #FP i = 0 Do While Not EOF(FP) And i <= (3600 - 1) Line Input #FP, CsvDataBuf(i)     ←(1) i = i + 1 Loop Close #FP : (省略) 【パターン2】 Private Sub read_Timer() Dim i As Long Dim CsvDataBuf(3600) As String 'CSV読込み変数 Dim tempBuf As String Dim FP As Integer 'ファイル番号 (省略) : tempBuf = "~500文字の文字列~" FP = FreeFile Open "C:\test.csv" For Input As #FP i = 0 Do While Not EOF(FP) And i <= (3600 - 1) CsvDataBuf(i) = tempBuf       ←(2) i = i + 1 Loop Close #FP : (省略)

  • Excelファイルの読み込み

    VBから既存のExcelファイルをフィールドごとに読み込む プログラムを作成しています。 xlFileName = App.Path & "strFileName" Open "xlFileName" For Append As #1 Line Input #1, Str Close #1 これで実行すると「変数は省略できません」というエラー が出てしまいます。 原因がわからないのでよろしかったらご教授ください。 お願いします。

  • プロパティの値が不正ですってでます!

    下記プログラムがあります。 Private Sub Timer1_Timer() data(current) = PICOCX1.ADinp(PortA, 4) Label4.Caption = Date & "," & Time ondo = "現在の温度:" & Format(data(current) / 10.23 * 5, "#0.0℃") kiroku = Date & "," & Time & "," & Format(data(current) / 10.23 * 5, "#0.0") Label1.Caption = ondo Dim MyFil As String Dim intFileNo As Integer MyFil = Text3.Text intFileNo = FreeFile If Dir$(MyFil) = "" Then Open MyFil For Output As #intFileNo Print #intFileNo, kiroku Close #intFileNo Else Open MyFil For Append As #intFileNo Print #intFileNo, kiroku Close #intFileNo End If End Sub このプログラムを1時間に一回実行したいのですがインターバルを3600000にするとプロパティの値が不正ですとでてしまい実行することができません。 どうやったらちゃんと動くようになりますか??お願いします。

  • VBAにて変数をコントロール名として使用する方法

    Access2002、VBAにて Me.txtテキストなどのようにコントロール名を指定しますが この「txtテキスト」の部分を変数を使って コントロールの指定を行うにはどのように記述すればよいでしょうか。 Dim test as variant test = "txtテキスト" Me.test のように・・・(上は適当です、すみません)

  • VBでオープンしたファイルの制御をCのプログラムに渡す方法

    VBでファイルのオープンをしてそのファイルの制御を Cのプログラムに渡す方法ってありますか? やりたいことを具体的にいうと ファイルのオープン、クローズはVBでやって、 ループの中の変数の値を、Cのプログラムに渡して Cのプログラムの中で印字するって処理をやりたいのです。 Cのプログラムをコールする際の引数で VBで開いたファイルハンドル、出力したい変数の値を 渡してやれば良いのかなと思ったのですが、うまくいかないようです。 なにか方法があれば教えてください。 宜しくお願い致します。 Dim i as Integer Open "\test.txt" For Output As #1 for i=0 to 10 call Cのプログラム(#1、i) next i close #1

専門家に質問してみよう