Avatar billede joern Nybegynder
21. juli 2002 - 11:48 Der er 5 kommentarer og
1 løsning

Dynamisk array

Et array kan f.eks. dimensioneres i 3 (om mange flere dimensioner)  melodi (20,12,500)

Jeg har 500 grammofonplader med indtil 12 skæringer og op til 20 oplysninger om hver skæring.  Det kan jeg indlæse i et array om opnå lynhurtig søgning, uden at læse fra disken igen.

Jeg mener der kan være 60 dimensioner i et array, men hvad med dynamisk tildeling, kan det lade sig gøre i mere end én dimension i VB5?
Avatar billede kedde65 Praktikant
21. juli 2002 - 12:01 #1
Jeg har ikke prøvet det i VB5, men i VB6 kan du bruges sætningen

redim preserve melodi(25,13,500)

til at redimensionere et multi dimensionelt array.

VH CK
Avatar billede tjacob Juniormester
21. juli 2002 - 12:15 #2
Ja, du kan redimme alle de dimensioner det kan være:

Dim melodi()      'den oprindelige (måske globale) erklæring
ReDim melodi(500, 12, 20)
-Du kan også gøre det med variable:    ReDim melodi(x, y, z)
-eller med increment: ReDim melodi(500, 12, Ubound(melodi, 3) + 1)

Hvis du ønsker at bevare indholdet i arrayet skal anvendes Preserve,
MEN -hvis du anvender Preserve kan du KUN redimme UpperBound i den sidste dimension.

F.eks. hvis du har melodi(500, 12, 20), så kan du kun ReDim Preserve
f.eks. til : ReDim Preserve(500, 12, 25).
Hvis du forsøger at ændre de andre dimensioner eller LowerBound på den sidste, så får du en runtime error, når du anvender keywordet Preserve.

/tjacob
Avatar billede tjacob Juniormester
21. juli 2002 - 12:23 #4
Hovsa, jeg havde ikke lige set at du har VB5.
Mine kommenterer/svar skal tages med forbehold!!
Jeg kører selv VB6, og mine svar er med udgangspunkt heri.

/tjacob
Avatar billede joern Nybegynder
21. juli 2002 - 16:24 #5
tjacob>>  Tak for links.  Egentlig var spørgsmålet en udløber af et andet spørgsmål, hvor kedde og jeg fik 'for mange' point.  Men dette med omfordeling af point løser vi på anden måde, og spørgsmålet her er selvfølgelig reelt nok.
På MS' side står ikke versions-nr.  Men jeg prøver at pusle lidt med det.
Mit (lille) problem er at jeg ikke vil dimensionere et array større end påkrævet for ikke at spise ram'en op.  Men mine programmer kører hos andre og jeg kan ikke vide hvor mange poster de evt. opretter, samt hvorledes deres maskiner er bestykket med hukommelse.

M.v.h.  Jørn
Avatar billede th0mas Nybegynder
01. august 2002 - 02:37 #6
Arrays i flere dimensioner, hmpf....
Min måde ville være at dimme en array variable som din egen type.
Public Type tArrPars
lpsz1 As String
lpsz2 As String
lpsz3 As String
osv...
End Type

Dim sArr() As tArrPars.......
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

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