Based on what you have, it appears that your file might look something like
this:
NAME=SENSOR1
SLOPE=0.75
YINTERCEPT=12
....
Another option, that won't force you to implicitly cast your V_Sensor to an
Object (when you add it to the ArrayList) and then back to a V_Sensor
immediately is to use a counter. This works if:
1) Every V_Sensor in your file is guaranteed to have all three entries,
2) NAME is guaranteed to be first every time
Also note the .Split() line - I added ", 2" to it so that it will return a
maximum of two items when is splits your string.
Dim V_FileReader As StreamReader
Dim V_TextLine As String
Dim V_TextSplit(2) As String
Const V_FileName As String = "HDTCHECKFIX.ini"
V_FileReader = File.OpenText(V_FileName)
V_TextLine = V_FileReader.ReadLine
Dim V_Sensor As New AnalogSensor
Dim AnalogSensors As New ArrayList
Dim Counter As Integer = 0
Do While Not V_TextLine = ""
V_TextSplit = V_TextLine.Split("=", 2)
' Initialize the counter to 1 when we read in the Name
If V_TextSplit(0).ToUpper = "NAME" Then
V_Sensor = New AnalogSensor
V_Sensor.Name = V_TextSplit(1)
Counter = 1
End If
' Increment the counter by one.
If V_TextSplit(0).ToUpper = "SLOPE" Then
V_Sensor.Slope = Convert.ToDecimal(V_TextSplit(1))
Counter += 1
End If
' Increment the counter by one. We explicitly convert the
number to
' decimal here.
If V_TextSplit(0).ToUpper = "YINTERCEPT" Then
V_Sensor.YIntercept = Convert.ToDecimal(V_TextSplit(1))
Counter += 1
End If
' We only add the sensor after the third item is read
If (Counter = 3) Then
Counter = 0
AnalogSensors.Add(V_Sensor)
End If
V_TextLine = V_FileReader.ReadLine
Loop
V_FileReader.Close()
"blisspikle" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Sorry. I guess that I forgot to mention that the "ANALOGSENSORS" that
> was used throughout the code is a public arraylist. The code below
> seems to be working quite well after I messed with it. The part that
> is different is in the arraylist using ANALOGSENSORS.ADD(NEW
> ANALOGSENSOR()). I did not (still do not?) know how to create another
> instance of the analogsensor class for each do loop when the name in
> the text file changes.
>
>
> <code>
> Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
> Dim V_Sensor As New AnalogSensor()
> Dim V_FileReader As StreamReader
> Dim V_TextLine As String
> Dim V_TextSplit(2) As String
> Const V_FileName As String = "HDTCHECKFIX.ini"
> V_FileReader = File.OpenText(V_FileName)
> V_TextLine = V_FileReader.ReadLine
> Do While Not V_TextLine = ""
> V_TextSplit = V_TextLine.Split("=")
> If V_TextSplit(0).ToUpper = "NAME" Then
> AnalogSensors.Add(New AnalogSensor())
> V_Sensor = AnalogSensors(AnalogSensors.Count - 1)
> End If
> If V_TextSplit(0).ToUpper = "SLOPE" Then
> V_Sensor.Slope = V_TextSplit(1)
> End If
> If V_TextSplit(0).ToUpper = "YINTERCEPT" Then
> V_Sensor.YIntercept = V_TextSplit(1)
> End If
> V_TextLine = V_FileReader.ReadLine
> Loop
> V_FileReader.Close()
>
> End Sub
>
> Public Class AnalogSensor
> Public Name As String
> Public Slope As Decimal
> Public Sub New()
> End Sub
> End Class
> </code>
>
>
> I guess the way I with that it would work is ....
>
> dim myclass1 as new class
> dim myarraylist1 as new arraylist
> for i = 0 to 100
> myclass1 = new class
> myarraylist1(i).add(myclass1)
> myclass1.name = "bill " & i
> next
>
> My understanding is not very good yet.
>
|