Toon posts:

[VB6]Array of array

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende probleem.
Ik heb een functie die een array teruggeeft. Dit werkt prima.
Ik wil de functie meerdere keren achter elkaar aanroepen. Nu leek het mij handiger om dan ook van de returnvalue een array te maken. Het wordt dan een array van arrays.
Nu kom ik daar dus niet helemaal uit.
Hoe dim ik zo'n array en hoe benader ik het later.

Eerst maar een stukje code om het te verduidelijken:
code:
1
2
3
4
5
6
Dim arr() as double

  'getData geeft een array van doubles terug:
  arr = getData("A")

  testvalue = arr(4)


Nu wil ik meerdere keren opvragen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim arr1() as double
Dim arr2() as double
Dim arr3() as double
Dim arr4() as double

  'getData geeft een array van doubles terug:
  arr1 = getData("A")
  arr2 = getData("B")
  arr3 = getData("C")
  arr4 = getData("D")

  testvalue1 = arr1(4)
  testvalue2 = arr2(5)
  enz.

Nu wil ik het eigenlijk zo:

code:
1
2
3
4
5
6
7
8
9
10
'Hoe declareer ik een array van arrays?
Dim arr()() as double 

  'getData geeft een array van doubles terug:
  arr(0) = getData("A")
  arr(1) = getData("B")
  arr(2) = getData("D")

  'Hoe vraag ik nu dan een waarde op:
  testvalue = arr(0)(4)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
code:
1
Dim arr(2,10) as double

:?
Dit geeft je een array van 3 x 11 doubles... (mits option base 0, voor de mierencopulators)
En anders maak je een array van het type variant, daar kun je zo'n beetje alles in kwijt :+ :X

[ Voor 27% gewijzigd door RobIII op 12-01-2005 17:13 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

RobIII schreef op woensdag 12 januari 2005 @ 17:12:
code:
1
Dim arr(2,10) as double

:?
Dit geeft je een array van 3 x 11 doubles... (mits option base 0, voor de mierencopulators)
En anders maak je een array van het type variant, daar kun je zo'n beetje alles in kwijt :+ :X
Op deze manier heb je niet 3 dynamische arrays..
volgens mij was het
code:
1
2
3
4
5
6
7
8
Dim arr(2) as Variant

'of zo kan het ook:
type double_array
  arr() as double
end type

dim arr(2) as double_array


edit:

anders lees ik ff goed.. Variant ding had RobIII al vermeld

[ Voor 8% gewijzigd door Verwijderd op 12-01-2005 22:23 ]


Verwijderd

Topicstarter
Het gaat inderdaad om dynamische arrays waar ik deels niet van weet hoe groot ze worden.

De functie getData regelt de grootte.

Ik heb het nu anders opgelost. Ik weet niet of het wel netjes is, dan hoor ik het graag.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim arr() As Double
Dim arr2() As String
Dim arrOfArrays() As Variant

    For i = 1 To 5
      arr = getData(arr2(i))
      arrOfArrays(i) = arr()
    Next i
    'Loop nu door de data heen
    arr = arrOfArrays(1)
    For x = LBound(arr) To UBound(arr)
       'Hier doe ik mijn ding met de data,
       'Daar heb ik ook nog een vraag (Evaluate()) over 
       'maar dat die ik wel in een
       'andere post.
    Next x


Dit werkt zoals ik het hebben wil.
Verbeteringen zijn altijd welkom.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Bekijk anders ReDim eens (zie Helpfile)...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Stiegl
  • Registratie: Mei 2004
  • Laatst online: 26-03 10:59
Volgens mij is dit wat je zoekt:
code:
1
2
3
4
5
6
7
8
9
10
    Dim arr1 As Variant
    Dim arr2() As String
    Dim arr3() As String
    
    ReDim arr2(3)
    ReDim arr3(3)
    
    arr1 = Array(arr2, arr3)
    
    arr1(0)(0) = "Hello world"

[ Voor 4% gewijzigd door Stiegl op 13-01-2005 10:26 ]

Uit onderzoek is gebleken dat 85% van alle statistieken niet klopt


Verwijderd

Topicstarter
@ The Cheese:

Inderdaad dat is wat ik zoek.
Het lijkt wel wat op de manier zoals ik het had opgelost.
Zit er qua performance en geheugen gebruik nog veel verschil in?

In ieder geval bedankt. Ik ga mijn code zeker aanpassen.

  • Stiegl
  • Registratie: Mei 2004
  • Laatst online: 26-03 10:59
Performance verlies zal wel meevallen, tenzij je het 100x per seconde wil aanroepen of op een 386 draait :P .

Uit onderzoek is gebleken dat 85% van alle statistieken niet klopt

Pagina: 1