Hej! Jag har haft uppe ett liknande problem innan. Har nu blivit tvungen att ändra det då beslut tagits om att det ska fungera på ett annat sätt. Så här ser min kod ut hittills:Hämta värden från ini till combobox
Så här är det:
Jag har 6 olika ini-filer:
Handkorning_Amnesplock.ini
Handkorning_Kap.ini
Handkorning_Dackmaskin.ini
Handkorning_KlossDackmaskin.ini
Handkorning_Medmaskin.ini
Handkorning_Uttransport.ini
I varje ini- fil finns tre olika kategorier som innehåller ett par värden:
[Motorer_Amnesplock]
[Hydrauliska_Amnesplock]
[Pneumatiska_Amnesplock]
[Motorer_Kap]
[Hydrauliska_Kap]
[Pneumatiska_Kap]
osv...osv..
i mitt program har jag 6 olika sidor, en för varje maskindel. På värje sida finns det två "kategorier" kan man säga."Handkörning 1" och "handkörning 2"
Handkörning 1 har tre stycken comboboxar:
Motorer
Hydrauliska ventiler
Pneumatiska ventiler
Handkörning 2 har också tre stycken comboboxar:
Motorer
Hydrauliska ventiler
Pneumatiska ventiler
Jag vill kunna hämta ut alla motorer, hydraulventiler och pneumatiska ventiler som tillhör sina maskiner
i sina respektive comboboxar. Handkörning 1 och 2 på Ämnesplocken t.ex ska ju hämta samma värden från ini filen så man kan köra två saker samtidigt. När jag sen valt ett värde ska det sättas en variabel i min PLC.
Stort projekt. Men hur gör jag? Jag vill gärna ha kodexempel, Inte bara hur jag ska gå till väga. Mycket tacksam för hjälp!!Sv: Hämta värden från ini till combobox
'Här hämtar jag värden från ini-filen.
'Ämnesplock - handkörning 1
objTxt1 = objFSO1.OpenTextFile("Handkorning_Amnesplock.ini")
If GoToSection(objTxt1, "[Motorer_Amnesplock]") Then
sLine1 = objTxt1.ReadLine
comboAmnesplockM1.Items.Clear()
comboAmnesplockM1.Items.Add("Ingen motor vald")
comboAmnesplockM1.SelectedIndex = 0
Do While Not objTxt1.AtEndOfStream And Not (VB.Left(sLine1, 1) = "[")
If sLine1 <> "" Then
Dim s As Array = Split(sLine1, "=")
comboAmnesplockM1.Items.Add(VB.Right(sLine1, Len(sLine1) - InStr(1, sLine1, "=", CompareMethod.Text)))
End If
sLine1 = objTxt1.ReadLine
Loop
End If
objTxt2 = objFSO2.OpenTextFile("Handkorning_Amnesplock.ini")
If GoToSection(objTxt2, "[Ventiler_Amnesplock]") Then
sLine2 = objTxt2.ReadLine
comboAmnesplockH1.Items.Clear()
comboAmnesplockH1.Items.Add("Ingen ventil vald")
comboAmnesplockH1.SelectedIndex = 0
Do While Not objTxt2.AtEndOfStream And Not (VB.Left(sLine2, 1) = "[")
If sLine2 <> "" Then
comboAmnesplockH1.Items.Add(VB.Right(sLine2, Len(sLine2) - InStr(1, sLine2, "=", CompareMethod.Text)))
End If
sLine2 = objTxt2.ReadLine
Loop
End If
'Ämnesplock - handkörning 2
objTxt1 = objFSO1.OpenTextFile("Handkorning_Amnesplock.ini")
If GoToSection(objTxt1, "[Motorer_Amnesplock]") Then
sLine1 = objTxt1.ReadLine
comboAmnesplockM2.Items.Clear()
comboAmnesplockM2.Items.Add("Ingen motor vald")
comboAmnesplockM2.SelectedIndex = 0
Do While Not objTxt1.AtEndOfStream And Not (VB.Left(sLine1, 1) = "[")
If sLine1 <> "" Then
comboAmnesplockM2.Items.Add(VB.Right(sLine1, Len(sLine1) - InStr(1, sLine1, "=", CompareMethod.Text)))
End If
sLine1 = objTxt1.ReadLine
Loop
End If
objTxt2 = objFSO2.OpenTextFile("Handkorning_Amnesplock.ini")
If GoToSection(objTxt2, "[Ventiler_Amnesplock]") Then
sLine2 = objTxt2.ReadLine
comboAmnesplockH2.Items.Clear()
comboAmnesplockH2.Items.Add("Ingen ventil vald")
comboAmnesplockH2.SelectedIndex = 0
Do While Not objTxt2.AtEndOfStream And Not (VB.Left(sLine2, 1) = "[")
If sLine2 <> "" Then
comboAmnesplockH2.Items.Add(VB.Right(sLine2, Len(sLine2) - InStr(1, sLine2, "=", CompareMethod.Text)))
End If
sLine2 = objTxt2.ReadLine
Loop
End If
Private Function GoToSection(ByRef filename As Scripting.TextStream, ByVal ParamArray SecName() As Object) As Boolean
Dim i As Short
Dim Data As String
On Error GoTo errorHandler
GoToSection = False
Do While Not filename.AtEndOfStream
Data = filename.ReadLine
For i = 0 To UBound(SecName)
If InStr(1, Data, UCase(SecName(i)), CompareMethod.Text) = 1 Then
GoToSection = True
Exit Do
End If
Next i
Loop
Exit Function
errorHandler:
GoToSection = False
End Function
'Sen har jag en knapp som ska ta värdet från ini-filen/comboboxen och skriva en siffra (alltså numret i ini-filen) i min plc.
Private Sub AktiveraAmnesplock1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraAmnesplock1.Click
Dim ValtVarde As Object
If Not comboAmnesplockM1.SelectedIndex = 0 Then
ValtVarde = comboAmnesplockM1.SelectedItem
Call TcClientSync.WriteVar(HMI_Hand1, ValtVarde)
Else
MsgBox("Välj en motor!")
End If
End Sub
Den här koden visar just nu "8.973193e-037" vilket som vem som helst vet inte stämmer. Hur gör jag så att det blir rätt?