Avatar billede cronck Nybegynder
28. juli 2004 - 21:37 Der er 12 kommentarer og
1 løsning

Hent Data fra (Index as string) og smid ind i ListView

Jeg har lavet denne funktion til at smække en hel masse brugere på mit ListView "UserList" på éen gang.
Den modtager hele brugerlisten ét huk. For eks. som "Jensen#Denmar#BillGates#USA"
Den skal så oprette brugeren, Jensen på listen med SmallIcon "Denmark", og BillGates med SmallIcon "USA"
FejL: Den velkendte 'Subscript out of range' i linie 5

Public Function ChattersListAdd(Index As String)
Dim arrSplit() As String
MsgBox "Function started"
arrSplit() = Split(Index, "#")
For x = 0 To 800
    If arrSplit(x) <> "" Then
        Call frmMain.UserList.ListItems.Add(, arrSplit(x), arrSplit(x), , arrSplit(x + 1))
        x = x + 1
    Else
        Exit For
    End If
Next
End Function
Avatar billede cronck Nybegynder
28. juli 2004 - 21:39 #1
Ups... Linie 6 er det så... MsgBox skulle ikke have været med, da jeg bare bruger det til at teste hvor den nåede til i scriptet...
Avatar billede cronck Nybegynder
28. juli 2004 - 21:46 #2
Har lige fundet ud af at fejlen kommer først når at den har lagt alle brugeren op i listen (korrekt)...?
Jeg troede at 'If arrSplit(x) <> "" Then' ville sikre at den ikke fortsatte hvis at det var tomt...?
Avatar billede sjh Nybegynder
28. juli 2004 - 21:58 #3
hvad laver -> x = x + 1 ??
Avatar billede sjh Nybegynder
28. juli 2004 - 21:59 #4
X bruger du her -> For x = 0 To 800
Avatar billede cronck Nybegynder
28. juli 2004 - 22:01 #5
Ja, men hvis den for eks. er nået videre fra den første, eks. Jensen#Denmark, skal den jo starte med nr. 3 næste gang, som er navnet på BillGates
Avatar billede helmet Nybegynder
28. juli 2004 - 22:04 #6
Nej, du vil få en fejl hvis blot du forsøger og læse et index som ikke findes i arrayet, arrayet bliver jo kun så langt som der er poster adskilt af #.
Er fif når man arbejder med array er at bruge lbound og ubound, som for tæller hvad det laveste og højeste index i arrayet er.
Så for og undgå at din for løkke løber for langt burde den se således ud

for x = lbound(arrSplit) to ubound(arrSplit)

Den pæneste løsning på din for løkke ville være og lade den tælle 2 op pr. gennemløb

for x = lbound(arrSplit) to ubound(arrSplit) step 2
  Call frmMain.UserList.ListItems.Add(, arrSplit(x), arrSplit(x), , arrSplit(x + 1))
Next
Avatar billede cronck Nybegynder
28. juli 2004 - 22:07 #7
Expected end of statement ved step 2...?
Ellers ser det skide godt ud det der :D
Avatar billede cronck Nybegynder
28. juli 2004 - 22:09 #8
Ups srry... Havde sat Step 2 ind et forkert sted... :D
Jeg takker mange gange for en utrolig god løsning!
Avatar billede helmet Nybegynder
28. juli 2004 - 22:10 #9
Jeg kunne da heller ikke forstå det ;)
Avatar billede cronck Nybegynder
28. juli 2004 - 22:22 #10
Nej, men jeg er et fjols til at få hjælp nogen gange.. :o)
Avatar billede cronck Nybegynder
28. juli 2004 - 22:41 #11
Kan jeg med UBound finde ud af hvor mange Winsock(0/1/2/3/4...) jeg har åbnet?
Eller findes der en bedre metode?
Avatar billede sjh Nybegynder
28. juli 2004 - 22:48 #12
Ja hvis du ikke loader alle 401 eller 801 på en gang.. så kan du bruge:

  Me.Caption = Winsock1.Count
Avatar billede cronck Nybegynder
28. juli 2004 - 22:49 #13
Ok... :D
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