webForumDet fria alternativet

Hjälp igång för ringrostig!

.NET

1 svar · 348 visningar · startad av mats_1

Medlem sedan mars 20071 inlägg
Frågan#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
258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)