Page 1 of 1

สอบถามเรื่อง vb.net อ่านค่าจาก textfile โดยไม่ให้เกิน Array

Posted: Sun Nov 01, 2015 11:34 am
by cheapache
สวัสดีครับอาจารย์ :D
ผมเขียนโค๊ดให้โปรแกรมอ่านค่าจาก textfile โดยข้อมูลข้างในจะเป็น IP Address ตามด้วยข้อมูลของ IP แต่ละตัว
เช่น 192.168.1.1 aaaaaaaaaaaaaaa
192.168.1.2 bbbbbbbbbbbbbb
การทำงานของโปรแกรมคือ เมื่อเขียน IP ที่ต้องการค้นหาลงใน textbox แล้วกดปุ่ม search คือ button1
โปรแกรมจะทำการเปรียบเทียบว่า ถ้าไป IP เหมือนกันจะนำมาแสดงใน listbox1 (ทางด้านซ้าย)

Code: Select all

Imports System.IO
Public Class Form1
    Dim DataConfig() As String
    Dim DataArray() As String
    Dim IP As String
    Dim Ipcompare As String
    Dim i As Integer = 0
    Dim ii As Integer = 0

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        TextBox1.Clear()
        ListBox1.Items.Clear()
        ListBox2.Items.Clear()
        Timer1.Stop()
        Button1.Visible = True
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim filename As String = "D:\dataparn.txt"
        Dim F As StreamReader = New StreamReader(filename)
        DataConfig = F.ReadLine.Split(",")
        F.Close()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Timer1.Start()
        Ipcompare = TextBox1.Text
        ListBox1.Items.Clear()
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Try
            Dim F As StreamReader = New StreamReader(DataConfig(1))
            Dim Read() As String = Split(F.ReadToEnd, vbNewLine)
            Dim Read1() As String = Read(i).Split(vbTab)
            ListBox2.Items.Add(Read(i))

            IP = Read1(0)
            If Ipcompare = IP Then
                ListBox1.Items.Add(Read(i))
            End If

            i = i + 1

            Button1.Visible = True

        Catch ex As Exception
        End Try
    End Sub
End Class
ปัญหาก็คือ ถ้าผมไม่ใส่คำสั่ง Try มันจะขึ้น error ว่า ไม่อยู่ในขอบเขต array นั่นหมายความว่า มันอ่านทะลุข้อมูลที่มีใน textfile
อยากทราบว่าจะแก้ปัญหานี้อย่างไรดีครับ ?
รบกวนด้วยครับ

Re: สอบถามเรื่อง vb.net อ่านค่าจาก textfile โดยไม่ให้เกิน Array

Posted: Sun Nov 01, 2015 12:00 pm
by snasui
:D Scope ของตัวแปร i คือระดับ Class ซึ่งตัว i จะเพิ่มค่าขึ้นเรื่อย ๆ ทุกการทำงานของ Event Timer1_Tick และหากเพิ่มขึ้นเรื่อย ๆ เช่นนี้ แสดงว่าไม่ได้ตรวจสอบตั้งแต่ค่าแรกของ Array เพราะค่าแรกของ Array จะเริ่มที่ 0 เสมอ การตรวจ Array ลำดับที่ i จึงเป็นไปได้ว่าจะเกินกว่าค่าในสมาชิก Array

หากตัว i เพิ่มแล้วจะให้ตรวจสอบ Array ในลำดับถัดไปตามตัว i จะต้องขยาย Array ออกไปด้วย ไม่ใช่ Array คงที่แล้วมีการเพิ่มค่า i เช่นที่เขียนมา หรือจะต้องเขียนให้ตรวจสอบลำดับที่มีอยู่จริงที่ไม่เกินจำนวนสมาชิกของ Array ครับ

Re: สอบถามเรื่อง vb.net อ่านค่าจาก textfile โดยไม่ให้เกิน Array

Posted: Sun Nov 01, 2015 12:20 pm
by cheapache
แก้ไขเรียบร้อยแล้วครับ และทำงานตามจุดประสงค์ที่ผมต้องการด้วยครับ
โดยเพิ่มโค๊ด

Code: Select all

    If i = UBound(Read) Then
                i = 0
                Timer1.Stop()
                Exit Sub
            End If
ขอบคุณสำหรับคำแนะนำครับผม :thup: