Avatar billede cronck Nybegynder
26. juli 2004 - 21:33 Der er 31 kommentarer og
1 løsning

Find tomt array(x)

Jeg har mit array arrUsers()
Det er en liste over online brugere på en server.
Hvis at Hansen er nummer 10, og Jensen er nummer 11, Hansens logger af. Hvordan kan jeg så automatisk finde det tomme array næste gang en bruger logger på?
Avatar billede thesurfer Nybegynder
26. juli 2004 - 21:41 #1
Så vidt jeg ved, sammentrækkes værdierne i et array.
Avatar billede thesurfer Nybegynder
26. juli 2004 - 21:42 #2
Dvs, hvis der er 11 brugere. Nr 10 er Hansen. Nr 11 er Jensen.
Hansen logger af. Jensen bliver så nr 10, da der så kun er 10 brugere.

Faktisk er der nummere + 1, idet arrays starter ved 0, og ikke 1.
Avatar billede cronck Nybegynder
26. juli 2004 - 21:44 #3
Hvordan gør jeg det så?
Den skal altid bare tage det næste ledige...
arrUsers(X) = arrSplit(1) & "|" & Index
Avatar billede thesurfer Nybegynder
26. juli 2004 - 21:45 #4
Vis noget mere kode.. det der ser forvirrende ud :-)
Avatar billede thesurfer Nybegynder
26. juli 2004 - 21:46 #5
De(t) "næste ledige" vil altid være:

De sidste "MaxAntalBruger - AntalBrugerOnline"

dvs, hvis MAB = 11, og ABO = 9, så er de ledige: nr 10 og 11
Avatar billede thesurfer Nybegynder
26. juli 2004 - 21:47 #6
Eller hva'? :-)
Avatar billede cronck Nybegynder
26. juli 2004 - 21:49 #7
arrSplit(1) er det brugernavn som den smidder i, og Index er winsock forbindelse nummer...
Avatar billede thesurfer Nybegynder
26. juli 2004 - 22:01 #8
Den næste ledige er: Ubound(arrUsers) + 1
Avatar billede thesurfer Nybegynder
26. juli 2004 - 22:02 #9
Eller Ubound(arrSplit) + 1
Hvis arrSplit er en array, og ikke en variabel, der senere hen skal splittes..
Avatar billede cronck Nybegynder
26. juli 2004 - 22:04 #10
Har lige lavet den her kode, og den virker...
Jeg ville bare gerne bruge en som er smartere... :-)
                Dim DidAdd As Boolean
                For x = 1 To IntMax
                    If arrUsers(x) = "" Then
                        If DidAdd <> True Then
                            DidAdd = True
                            arrUsers(1) = arrSplit(1) & "|" & Index & "|" & rs!Country
                        End If
                    End If
                Next
Avatar billede thesurfer Nybegynder
26. juli 2004 - 22:05 #11
Hvis den virker: fint :-)
Avatar billede cronck Nybegynder
26. juli 2004 - 22:09 #12
Du kom stadig med den første løsning.... :P
Send svar :D
Avatar billede thesurfer Nybegynder
26. juli 2004 - 22:11 #13
OK.. men hvilken løsning var det? :-)
Avatar billede cronck Nybegynder
26. juli 2004 - 22:14 #14
Hvad mener du? 22:04:21
Avatar billede cronck Nybegynder
26. juli 2004 - 22:14 #15
Den tjekker bare alle arrays igennem, og snubber det første tomme...
Avatar billede thesurfer Nybegynder
26. juli 2004 - 22:20 #16
Du skrev: "Du kom stadig med den første løsning" :-)

Hvilken løsning er det?
Avatar billede cronck Nybegynder
26. juli 2004 - 22:21 #17
Nååh... Ubound(arrUsers) + 1
Avatar billede cronck Nybegynder
26. juli 2004 - 22:21 #18
Det var vel en løsning? :-)
Avatar billede thesurfer Nybegynder
26. juli 2004 - 22:22 #19
Ja, det kan man vel godt sige :-)
Avatar billede thesurfer Nybegynder
26. juli 2004 - 22:25 #20
Så siger jeg takker for points :-)
Avatar billede cronck Nybegynder
26. juli 2004 - 22:36 #21
Keine probleme.. ;)
Avatar billede cronck Nybegynder
26. juli 2004 - 22:48 #22
Så kan du måske lige svare mig på en enkelt ting....
hvordan laver jeg en funktion som jeg kan bruge overalt i min form...
For eks. sætte Connection = UserConnection("CroncK")
så den funktion returnerer Integer?
Her er som jeg har lavet den indtil videre...
Function UserConnection(strUser As String)
Dim arrSplit() As String
Dim strData As String
For x = 1 To 400
    strData = arrUsers(x)
    arrSplit() = Split(strData, "|")
    If arrSplit(1) = "strUser" Then
        'Hvad skal jeg skrive her?
    End If
Next
End Function
Avatar billede thesurfer Nybegynder
26. juli 2004 - 22:50 #23
Når man skal returnere noget, hvilket er grunden til at man bruger en funkion, skriver man funktionens navn = værdien.

I dit tilfælge:

UserConnection = værdi

f.eks.

UserConnection = 100
Avatar billede cronck Nybegynder
26. juli 2004 - 22:50 #24
Glemte lige at der ikke skal være "" når jeg henter strUser, men hvad gør jeg?
Avatar billede cronck Nybegynder
26. juli 2004 - 22:52 #25
Hmm...
Kan jeg ikke kalde min funktion for eks. sådan her:
Winsock(UserConnection CroncK).SendData "Bla Bla"
Avatar billede thesurfer Nybegynder
26. juli 2004 - 22:54 #26
Eksempel (kilde http://www.tek-tips.com/gviewthread.cfm/pid/709/qid/882577 ):

Public Function CheckNull(strCheck As String) As String
  If strCheck = "" Then
    CheckNull = "yes" 'dummy filler code for checking
  End If
End Function

"yes" sendes tilbage..
Avatar billede cronck Nybegynder
26. juli 2004 - 22:56 #27
funktionen skulle gerne returnere forbindelse nr. arrSplit(1) hvis jeg spørger funktionen efter for eks. Cronck...
Havde skrevet forkert i funktionen, den if, skal være arrSplit(0)
Avatar billede cronck Nybegynder
26. juli 2004 - 22:57 #28
og det er fordi at der står as string efter parantesen?
Avatar billede thesurfer Nybegynder
26. juli 2004 - 22:58 #29
Ja, det skal stå uden ""..

men det skal nok være noget i stil med:

tmp = UserConnection ("CroncK")
Winsock(tmp).SendData "Bla Bla"
Avatar billede thesurfer Nybegynder
26. juli 2004 - 23:12 #30
mht "strUser" -> Function UserConnection(strUser As String)

strUser er en variabel, og skal derfor ikke i "".. gør man det, bruger man ikke "strUser" som en variabel, men som tekst. Derved kan man ikke bruge, det variablen indeholder..
Avatar billede cronck Nybegynder
27. juli 2004 - 10:54 #31
Ved det... :-)
Avatar billede cronck Nybegynder
28. juli 2004 - 21:59 #32
thesurfer: Måske du er manden til at løse den her: http://www.eksperten.dk/spm/524236 :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