Avatar billede _et Praktikant
26. maj 2003 - 18:51 Der er 20 kommentarer og
1 løsning

Array - hvordan

Compile Error:

Sub or function not defined

________________________________________________________
Private Sub Form_Load()
Dim Kass(6) As Integer
Dim Lort As Integer
For i = 0 To 6
    Kass(i) = 0
Next
End Sub

Private Sub CMD_Kast_Click()
For i = 1 To TXT_Antal_Terninger
   
    For j = 1 To TXT_Antal_Kast
        Lort = Int((6 * Rnd) + 1)
        Kass(Lort) = (Kass(Lort) + 1) ' Her er fejlen
        Tilføj Int(Lort)
    Next

Next
End Sub

Jeg skal tilføje 1 til den possision i Kass arrayet, som findes med Rnd, men det virker ikke

Hvordan skal jeg bruge arrayet
Avatar billede Slettet bruger
26. maj 2003 - 18:57 #1
Dim Kass(6) As Integer <-- betyder 6 elementer i dit array
For i = 0 To 6 <-- Giver 7 elementer i dit array

Hvis der skal være 7 så må du ændre din Dim ellers kør fra 1 to 6 i løkken.
Avatar billede Slettet bruger
26. maj 2003 - 18:59 #2
Hmm, jeg var lige for hurtig. Eller hvad...jeg tror stadig at du render over de positioner du har defineret dir array til, hvad returnerer din Rnd funktion?
Avatar billede _et Praktikant
26. maj 2003 - 19:03 #3
Tak, men problemet ligger i linjen

Kass(Lort) = Kass(Lort) + 1
______________|||||||||    -  Det er her den kommer med fejlen : Compile error


Hvis det var pos 5 i Kass der skulle lægges 1 til, hvordan skal linjen være?
Kass(5) = Kass(5) +1  ' eller hvad
Avatar billede _et Praktikant
26. maj 2003 - 19:05 #4
den retunerer et heltal mellem 1 og 6

Den fejl du nævnte var der også, men jeg havde ikke mødt den endnu, fordi jeg ikke kan putte noget i array'et endnu, pga. ovenstående fejl
Avatar billede Slettet bruger
26. maj 2003 - 19:22 #5
prøv Kass(Lort + 1)
Avatar billede _et Praktikant
26. maj 2003 - 19:26 #6
så bliver det vel bare Kass(6), hvis Lort = 5
Avatar billede Slettet bruger
26. maj 2003 - 19:29 #7
Ja...nå nu er jeg med, Kass(Lort) = CInt(Kass(Lort)) + 1
Avatar billede _et Praktikant
26. maj 2003 - 19:31 #8
Det giver samme fejl.

Jeg tror ikke jeg opretter arrayet ordenligt

kan du kode denne psudokode
----------------------------------------
opret array(6 pos)
sæt array(0 til 6) til "0"
tilføj 1 til array(1) - Herefter array(1) = 1
tilføj 1 til array(2) - Herefter array(2) = 1
tilføj 1 til array(1) - Herefter array(1) = 2

--------------------------------------------------

bare et kort eks, så jeg kan se syntaxen
Avatar billede _et Praktikant
26. maj 2003 - 19:34 #9
Samme fejl: 
Compile Error: Sub or function not defined


    For j = 1 To TXT_Antal_Kast
        Lort = Int((6 * Rnd) + 1)
        Kass(Lort) = CInt(Kass(Lort)) + 1
    Next
--------------------------||||

Det er lige over |||| den laver fejlen
Den tror Kass er en Sub eller Function
Avatar billede Slettet bruger
26. maj 2003 - 19:35 #10
Jamen det du laver i starten er godt nok bortset fra 0 til 6

Dim Kass(6) As Integer
Dim Lort As Integer
For i = 1 To 6
    Kass(i) = 0
Next
Avatar billede Slettet bruger
26. maj 2003 - 19:36 #11
2 minutter jeg koder lige et eksempel.
Avatar billede _et Praktikant
26. maj 2003 - 19:37 #12
så må fejlen jo ligge i tilskrivningen af 1

Hvordan vil du gøre det hvis det er indholdet af kass(5), der skal tilskrives med "sig selv" +1
Avatar billede Slettet bruger
26. maj 2003 - 19:39 #13
Hæ hæ nu ved jeg hvad der er galt din Private Sub CMD_Kast_Click() kender ikke dit array, du skal definere dit array helt i toppen af din side så det bliver globalt ellers kan du kun bruge det i din form load.
Avatar billede Slettet bruger
26. maj 2003 - 19:40 #14
Det er det samme med Dim Lort as integer
Avatar billede olet Nybegynder
26. maj 2003 - 19:46 #15
Problemet er ganske simpelt at de variable, som Dim'es i Form_Load er udenfor scope i CMD_Kast_Click().

Flyt de to Dim's ud for sig selv (og ret jvf. ovenstående):

Dim Kass(6) As Integer
Dim Lort As Integer

Private Sub Form_Load()

For i = 1 To 6
    Kass(i) = 0
Next
End Sub

Private Sub CMD_Kast_Click()
For i = 1 To TXT_Antal_Terninger
   
    For j = 1 To TXT_Antal_Kast
        Lort = Int((6 * Rnd) + 1)
        Kass(Lort) = (Kass(Lort) + 1) ' Fejler ikke nu
        Tilføj Int(Lort)
    Next

Next
End Sub
Avatar billede _et Praktikant
26. maj 2003 - 19:52 #16
Coool bertie, du får lige 5 ekstra for den lange hjælp
Avatar billede Slettet bruger
26. maj 2003 - 19:54 #17
Takker, det var måske gået hurtigere hvis jeg havde læst ordentlig fra starten :-)
Avatar billede olet Nybegynder
26. maj 2003 - 19:55 #18
Thx for nothing, et ;-)
Avatar billede Slettet bruger
26. maj 2003 - 19:57 #19
olet>> Du kom med dit svar efter mit så hvad forventer du egentlig?
Avatar billede olet Nybegynder
26. maj 2003 - 19:59 #20
Bemærk en overbærende smiley, jeg kan da godt se at vi krydsede hinanden. Du var måske lidt mange svar om at komme frem til resultatet :-D
Avatar billede Slettet bruger
26. maj 2003 - 20:07 #21
Jeg er klar over jeg brugte mange svar som du også kan se af mit tidligere indlæg, jeg så godt smileyen men synes egentlig at din kommentar var overflødig. Bare hvad jeg synes.
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