none
用FilePut將變數寫入INI RRS feed

  • 問題

  • 想請問大大有關於把一個變數寫入到INI檔

        Dim Motionini As String = "C:\Program Files\Network Recording Software Premium\Motion.ini"
        Dim i As Integer = 0

      Using sr As StreamReader = New StreamReader(FileName, System.Text.Encoding.GetEncoding("big5"))
                input = sr.ReadLine()
                While Not input Is Nothing
                    i += 1
                    Console.WriteLine(input)
                    input = sr.ReadLine()
                    Label1.Text = "第" + CStr(i) + "筆"
                End While
                FileOpen(1, Motionini, OpenMode.Binary)
                FilePut(1, i)
                FileClose(1)

    End Using

     

    測試了一下

    打開檔案只看到一些空白字元

    是需要把那個變數 i 轉化為文字,還是Fileput有正確的用法。

    • 已編輯 李小廷 2010年9月16日 下午 02:23 改更適當的標題以利同好查詢
    2010年9月16日 下午 01:03

解答

  •             FileGet(1, i)
                MessageBox.Show(Chr(i))
    

    • 已標示為解答 李小廷 2010年9月16日 下午 05:21
    2010年9月16日 下午 02:24
  •         Try
                ' Create an instance of StreamReader to read from a file.
                Dim sr As StreamReader = New StreamReader(Motionini, System.Text.Encoding.GetEncoding("big5"))
                Dim line As String
                ' Read and display the lines from the file until the end 
                ' of the file is reached.
                Do
                    line = sr.ReadLine()
                    Console.WriteLine(line)
                    MessageBox.Show(line)
                Loop Until line Is Nothing
                sr.Close()
            Catch Ex As Exception
                ' Let the user know what went wrong.
                Console.WriteLine("The file could not be read:")
                Console.WriteLine(Ex.Message)
            End Try
    

    StreamReader 類別

    StreamReader讀得到吧...
    • 已標示為解答 李小廷 2010年9月16日 下午 05:21
    2010年9月16日 下午 03:05
  • 感謝大大的提示

    我成果有做出來了

            js = New StreamReader(Motionini, Encoding.GetEncoding("big5"))
            j = CInt(js.ReadLine)
            'MsgBox(j)
            js.Close()
            Using sr As StreamReader = New StreamReader(FileName, System.Text.Encoding.GetEncoding("big5"))
                input = sr.ReadLine()
                While Not input Is Nothing
                    i += 1
                    Console.WriteLine(input)
                    input = sr.ReadLine()
                    Label1.Text = "第" + CStr(i) + "筆"
                    TextBox1.Text = TextBox1.Text + input + vbCrLf
                    ' MsgBox(input)
                    If i = j Then
                        If Not input = "" Or Not input = Nothing Then 字串解析3(input)
                    End If
                End While
                FileOpen(1, Motionini, OpenMode.Binary)
                FilePut(1, i.ToString)
                FileClose(1)
            End Using

    感謝您

    • 已標示為解答 李小廷 2010年9月18日 上午 12:35
    2010年9月16日 下午 05:21

所有回覆

  •             FilePut(1, i.ToString)
    

    FilePut 函式

    http://msdn.microsoft.com/zh-tw/library/0s9sa1ab(VS.90).aspx

    HOW TO:將文字寫入檔案

    http://msdn.microsoft.com/zh-tw/library/6ka1wd3w(VS.80).aspx

     

     

     

    • 已標示為解答 李小廷 2010年9月16日 下午 01:37
    • 已取消標示為解答 李小廷 2010年9月16日 下午 04:19
    2010年9月16日 下午 01:32
  • 在請問大大

    若為FileGet時

    參考MSDN裏面的資訊,我的需求應該是以這行為主

    Public Overloads Sub FileGet(  ByVal FileNumber As Integer,  ByRef Value As Integer,  Optional RecordNumber As Integer = -1 )

    小弟揣撤的寫法 FileGet( 1 , j , RecordNumber = binary)

    第三個參數實在透徹不出其意涵,可否請您在提點一下。

    2010年9月16日 下午 02:13
  •             FileGet(1, i)
                MessageBox.Show(Chr(i))
    

    • 已標示為解答 李小廷 2010年9月16日 下午 05:21
    2010年9月16日 下午 02:24
  • 小弟一開始也是如此寫法

    但是執行測試時

    跑到FileGet(1,i) 遇到系統提示錯誤說   無法讀取資料流末端之外的狀況

    ini檔案的內容只有1行數字(沒有跳行)

    然後參考疑難排解的System.IO.EndOfStreamException內容

    好像都是使用資料流的方式讀取,

    到此就迷惑了。

    2010年9月16日 下午 02:41
  •         Try
                ' Create an instance of StreamReader to read from a file.
                Dim sr As StreamReader = New StreamReader(Motionini, System.Text.Encoding.GetEncoding("big5"))
                Dim line As String
                ' Read and display the lines from the file until the end 
                ' of the file is reached.
                Do
                    line = sr.ReadLine()
                    Console.WriteLine(line)
                    MessageBox.Show(line)
                Loop Until line Is Nothing
                sr.Close()
            Catch Ex As Exception
                ' Let the user know what went wrong.
                Console.WriteLine("The file could not be read:")
                Console.WriteLine(Ex.Message)
            End Try
    

    StreamReader 類別

    StreamReader讀得到吧...
    • 已標示為解答 李小廷 2010年9月16日 下午 05:21
    2010年9月16日 下午 03:05
  • 大大,抱歉,小弟沒有把所有的程式碼貼出

    所以有些地方含糊了

    小弟的迷惑是

    StreamReader所取到的是文字

    原本 i 是 Integer變成無法跟String比對

    一開始的做法先讀取ini檔 為j

    然後在一個迴圈內利用 i 值去累積

    等到載入結束後,把 i 寫到ini檔去

            js = New FileStream(Motionini, FileMode.Open, FileAccess.Read)
            Dim j As New BinaryReader(js)

            Using sr As StreamReader = New StreamReader(FileName, System.Text.Encoding.GetEncoding("big5"))
                input = sr.ReadLine()
                While Not input Is Nothing
                    i += 1
                    Console.WriteLine(input)
                    input = sr.ReadLine()
                    Label1.Text = "第" + CStr(i) + "筆"
                    If i = j  Then
                        If Not input = "" Or Not input = Nothing Then 字串解析3(input)
                    End If

                End While
                FileOpen(1, Motionini, OpenMode.Binary)
                FilePut(1, i.ToString)
                FileClose(1)

            End Using

     

    結果就變成型別不同 無法比對

    2010年9月16日 下午 03:22
  • 感謝大大的提示

    我成果有做出來了

            js = New StreamReader(Motionini, Encoding.GetEncoding("big5"))
            j = CInt(js.ReadLine)
            'MsgBox(j)
            js.Close()
            Using sr As StreamReader = New StreamReader(FileName, System.Text.Encoding.GetEncoding("big5"))
                input = sr.ReadLine()
                While Not input Is Nothing
                    i += 1
                    Console.WriteLine(input)
                    input = sr.ReadLine()
                    Label1.Text = "第" + CStr(i) + "筆"
                    TextBox1.Text = TextBox1.Text + input + vbCrLf
                    ' MsgBox(input)
                    If i = j Then
                        If Not input = "" Or Not input = Nothing Then 字串解析3(input)
                    End If
                End While
                FileOpen(1, Motionini, OpenMode.Binary)
                FilePut(1, i.ToString)
                FileClose(1)
            End Using

    感謝您

    • 已標示為解答 李小廷 2010年9月18日 上午 12:35
    2010年9月16日 下午 05:21