21. januar 2008 - 12:48
Der er
4 kommentarer og
1 løsning
test input fra file
Hej
jeg har en tekstfil med en masse rækker, hvad række starter med et nummer der er efterfuldt af et ";" hvorden tjekker jeg at de tal der står først i hver linien er der max 2 gange. her er er et eks:
500;test
500;test
600;test
600;test
700;test
700;test
700;test
700;test
her skal den f.eks komme med en tekstbox angående 700, da der står 4 gange.
21. januar 2008 - 13:47
#1
Brug en variabel, til at tælle med, og læs den gamle værdi ind i en også
If OldID = NewID then
Tæller = tæller +1
else
Tæller = 1
OldID = NewID
end if
If Tæller > 2 then Msgbox "************"
21. januar 2008 - 14:44
#3
Du er nødt til at holde rede på, om et givet tal er talt med, så det bliver en længere smøre:
Dette antager at tallene kan komme i tælfældig rækkefølge i tilfældig orden.
Hvis tallene kun forekommer éen gang i en "blok", så kan koden afkortes lidt.
Dim i As Integer, j As Integer, k As Integer
Dim iNums() As Integer
Dim sNum As String
Dim sCheckedNums() As Integer
Dim bValidNum As Boolean
Dim iCountNum As Integer
'indlæs filen til array (husk at ændre stien!!):
i = FreeFile
Open "C:\Documents and Settings\tjacob\Skrivebord\Eksp11\test.txt" For Input As #i
Do Until EOF(i)
ReDim Preserve iNums(j)
Line Input #i, sNum
k = InStr(1, sNum, ";", vbTextCompare)
iNums(j) = CInt(Left(sNum, k - 1))
j = j + 1
Loop
Close #i
' loop igennem array, og tæl forekomster:
ReDim sCheckedNums(0)
For i = 0 To UBound(iNums)
'Se om Num allerede er tjekket:
bValidNum = True
If UBound(sCheckedNums) > 0 Then
For j = 1 To UBound(sCheckedNums)
If sCheckedNums(j) = iNums(i) Then
bValidNum = False
Exit For
End If
Next j
If bValidNum Then
ReDim Preserve sCheckedNums(UBound(sCheckedNums) + 1)
sCheckedNums(UBound(sCheckedNums)) = iNums(i)
End If
Else
ReDim Preserve sCheckedNums(1)
sCheckedNums(1) = iNums(i)
End If
' hvis nummer er nyt, tæl antal forekomster:
If bValidNum And i < UBound(iNums) Then
iCountNum = 1
For j = (i + 1) To UBound(iNums)
If iNums(j) = iNums(i) Then iCountNum = iCountNum + 1
Next j
If iCountNum > 2 Then MsgBox "Tallet: " & CStr(iNums(i)) & " forekommer " & CStr(iCountNum) & " gange."
End If
Next i