Avatar billede biohazard_666 Nybegynder
17. april 2008 - 23:43 Der er 1 løsning

Hurtig søgning igennem et listview?

Hej Eksperter :)

Jeg har et program, hvilket indeholder et listview med nogle IP adresser (på computere, der er forbundet til mit program) og et gruppenavn på IP'en (de er delt op i grupper, alt efter type). Endvidere har jeg et listview mere, med nogle "Keybinds" - altså knapper der skal trykkes på, hvis gruppenavnet er korrekt.
Min list1 kunne se således ud:
IP:            Gruppenavn:
127.0.0.1      test1
127.0.0.2      test2
127.0.0.3      test1
127.0.0.4      test3

Mens at min anden list, umiddelbart kan se således ud:
Lokal tryk:          Remote tryk:          Gruppenavn:
1                    A                    test1
1                    C                    test2
2                    K                    test3


osv.

Spørgsmålet er så bare, hvordan jeg nemmest får checket disse listviews igennem og sendt de rigtige informationer ud til de pågældende grupper. Lige pt har jeg et problem med, at når der kommer mange keybinds i list2, så begynder computeren at reagere langsomt overall generelt, da jeg har et keyboard-hook kørende, der checker ALLE tastetryk. Jeg har så prøvet at begrænse søgningen, så den først checker en variabel igennem om den indeholder nogle af de lokale tryk, og hvis dette er tilfældet, så kører den nogle løkker og finder de passende par.
Koden hertil ser således ud:

    If KeyCode >= 96 And KeyCode <= 105 Then 'Numlock taster!
        strSearch = "-[" & KeyCode - 96 & "]"
    ElseIf KeyCode = vbKeyF1 Or KeyCode = vbKeyF2 Or KeyCode = vbKeyF3 Or KeyCode = vbKeyF4 Or KeyCode = vbKeyF5 Or KeyCode = vbKeyF6 Or KeyCode = vbKeyF7 Or KeyCode = vbKeyF8 Or KeyCode = vbKeyF9 Or KeyCode = vbKeyF10 Or KeyCode = vbKeyF11 Then
        strSearch = "-F" & KeyCode - 111
    Else
        strSearch = "-" & Chr(KeyCode)
    End If

If InStr(1, mVars.strKeybind, strSearch) > 0 Then
For Each objServer In sckServer
  If objServer.State = sckConnected Then
      For x = 1 To lstConnect.ListItems.Count
        strRemoteHost = objServer.RemoteHostIP
        If lstConnect.ListItems(x).Text = strRemoteHost AND lstConnect.ListItems(x).SubItems(2) = strType Then
            objServer.SendData (strData)
            DoEvents
        End If
      Next                 
  End If
Next
End if

Er det muligt på nogen måde, at optimere denne kode, så det kan køre noget hurtigere? Er der andre og bedre metoder at klare det på? Ved godt det er en omgang upraktisk og grim kode, men mangler lidt viden mht. søgning indenfor VB og ting i den dur, hvilket bestemt ikke gavner denne problemstilling :)

Jeg håber i forstår spørgsmålet, ellers må i lige sige til :)

mvh
Lars
Avatar billede biohazard_666 Nybegynder
30. oktober 2008 - 23:07 #1
lukker
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