Toon posts:

[VB6] Probleem met array en loop

Pagina: 1
Acties:
  • 49 views sinds 30-01-2008

Verwijderd

Topicstarter
Aloha,

Ik ben bezig voor school met een kaartspel dat gemaakt moet worden in VB6. De code waar het om gaat is dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Command1_Click()

   Dim cnt As Long
   Dim myArray(1 To 32) As Long
   Dim intpic As Integer
   


   For cnt = 1 To 32
      myArray(cnt) = cnt

   Next
   
   RandomizeArray myArray
   
 
   For cnt = 33 To 64
         cnt2 = cnt + 32
         Picture(cnt2).Picture = Picture(myArray(cnt)).Picture
        
Next

End Sub

Bovenstaande werkt dus niet. |:(

Als ik de code
code:
1
 Picture33.picture = Picture3.picture

gebruik dan wordt het plaatje uit picturebox 3 gekopieerd naar picturebox 33.
Dus het principe klopt alleen de code niet.

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 07-08 21:48

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

code:
1
2
3
For cnt = 33 To 64
cnt2 = cnt + 32
Picture(cnt2).Picture = Picture(myArray(cnt)).Picture



De grootte van je myArray is 1 t/m 32, de grootte van cnt in deze loop is 33 t/m 64, deze getallen zijn dus groter dan je array is en kunnen dus niet worden opgehaald.

Mogelijke oplossing (alhoewel ik ook twijfel over cnt2, want die is 65 t/m 96):

Picture(myArray(cnt-32)).Picture

[ Voor 1% gewijzigd door DanielG op 14-10-2005 13:14 . Reden: typo bij variabele ]

http://xyproblem.info/


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

* Schonhose vraagt zich ook af of er nog iets is met Option Base 1, anders beginnen je array's bij nul.

En wat DanielG terecht opmerkt: je array loopt van 1 - 32. Vervolgens probeer je elementen 33 - 64 te benaderen uit je array. Dat gaat niet werken.

Sowieso hinkt je code op twee gedachtes:

Visual Basic:
1
2
3
4
For cnt = 33 To 64
         cnt2 = cnt + 32
         Picture(cnt2).Picture = Picture(myArray(cnt)).Picture
Next

cnt2 krijgt nu de waarden 65 - 96 en dat is volgens mij ook niet wat je wilt. Probeer het eens zo:

Visual Basic:
1
2
3
4
For cnt = 1 To 32
         cnt2 = cnt + 32
         Picture(cnt2).Picture = Picture(myArray(cnt)).Picture
Next


Nu heeft cnt2 de volgende waarden 33 - 64

Vergeet je niet even naar de Option Base 1 te kijken?

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 07-08 21:48

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Ik zie dat er op [VB6] Probleem met array en loop meer antwoorden zijn (dus 2 dezelfde topics 8)7), deze topic lijkt me dan overbodig.

http://xyproblem.info/


  • sanfranjake
  • Registratie: April 2003
  • Niet online

sanfranjake

Computers can do that?

(overleden)
Dit is eerder een programmeervraag, en aangezien je in Programming & Webscripting al exact het zelfde topic hebt geopend ga ik deze sluiten. Een enkel topic over hetzelfde probleem is meer dan zat :)

Mijn spoorwegfotografie
Somda - Voor en door treinenspotters


Dit topic is gesloten.