Jag är tyvärr ingen jättevan VB programmerare och skulle därför behöva lite tips och hjälp med att lösa ett problem.
Min önskan är att skapa ett program som läser in en textfil som kan se ut enl. nedan:
0CF00400 X 8 F8 7D 7D 00 00 FF FF FF 2218.401 R
00EFD100 X 8 3D 3D 3D 3D 3D 3D 3D 3D 2218.400 R
00EFD200 X 8 3D 3D 3D 3D 3D 3D 3D 3D 2218.399 R
0CFF5800 X 8 07 00 00 01 67 01 06 00 2218.399 R
0C000011 X 8 00 00 00 FA 00 00 00 00 2218.397 R
0CF00400 X 8 F8 7D 7D 00 00 FF FF FF 2218.391 R
00EFD200 X 8 3D 3D 3D 3D 3D 3D 3D 3D 2218.390 R
0CFF4800 X 8 F8 7C 30 FF FF FF FF 00 2218.389 R
Nu vill jag att programmet kollar den första 8 tecken långa gruppen (som är en identifierare) och jämför den med ett par bestämda kombinationer. Om denna finns med så skrivs hela raden ut.
Ur den 8 tecken långa första kombinationen så är det de fyra ”mittersta” tecknen (de på position 3,4,5 & 6) som skall jämföras med ett par 4 tecken långa bestämda kombinationer.
Ex. på bestämda kombinationer som jag är intresserad av är:
F004
F006
EFD2
FFFF
I detta fall så skulle rad 1, 3, 6 & 7 skrivas ut.
Dessa 4 tecken långa kombinationer som jag är intresserad av önskar jag kunna ändra/lägga till/ta bort. Har man dessa då kanske också i en separat textfil!?
Eftersom jag är rätt ringrostig när det gäller VB så skulle jag vara otroligt tacksam om någon skulle kunna hjälpa mig igång med tips/förslag på detta.
Dim Var As String
Dim f As Scripting.FileSystemObject: Set f = New Scripting.FileSystemObject
Dim fi As Scripting.TextStream: Set fi = f.OpenTextFile("x:\path\to\file.txt", ForReading, False)
While Not fi.AtEndOfStream
Var = Mid(fi.ReadLine, 3, 4)
Select Case Var
Case "F004", "F006", "EFD2", "FFFF"
' Träff
Case Else
' Inte träff
End Select
Wend
Skulle inte det vara rätt kan du ju prova med detta alternativ
Dim var As String: var = "F004,F006,EFD2,FFFF"
Dim arr As Variant: arr = Split(var, ",")
Dim i As Integer
For i = 0 To UBound(arr)
If Mid(fi.ReadLine, 3, 4) = arr(i) Then
' Träff
End If
Next i
258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e