Avatar billede madiedk Nybegynder
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.
Avatar billede kabbak Professor
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 "************"
Avatar billede madiedk Nybegynder
21. januar 2008 - 14:08 #2
kunne godt tænkte mig at se et eksample. der skal vel også være en for for løkke, der kører det hele igennem?
Avatar billede tjacob Juniormester
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
Avatar billede madiedk Nybegynder
23. januar 2008 - 18:03 #4
tak, smid et svar tjacob
Avatar billede tjacob Juniormester
24. januar 2008 - 08:53 #5
OK -svar ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester