Hjälp igång för ringrostig!

.NET

1 svar · 363 visningar · startad av mats_1

Medlem sedan mars 20071 inlägg
Trådstart#1

Hej!

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.

Tack på förhand!
/Mats

Medlem sedan maj 2002560 inlägg
#2

Lite sent kanske men så här kanske?

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
312 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
174 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
175 ms — ändringar (db)