webForumDet fria alternativet

Omdimensionera array rätt...

1 svar · 278 visningar · startad av mrblonde

mrblondeMedlem sedan aug. 20012 349 inlägg
#1

Hej, jag får spatt i huvet av att tänka på detta.

Jag har en egen Type array som heter user.groups() som har två fält user.groups().name och user.groups().type

I ett visst fal måste jag dynamiskt utöka den här arrayen enligt följande logik.

Det kommer alltid att finnas 2 grupper, så koden startar emd detta:

Redim User.Groups(1)
User.groups(0).Name = "Grupp1"
User.groups(0).Type = "Type1"

User.groups(1).Name = "Grupp2"
User.groups(1).Type = "Type1"

Sen har jag en variabel som innehåller ihop pipe:ade gruppnamn. För varje gruppnamn som finns i den här variabeln skall jag skapa 3 grupper.
Tillexempel:

strVariable = "namn3|namn4"
'skall resulterar i:
User.groups(2).Name = "namn3" & strSpecialNamnstillägg1
User.groups(2).Type = "Type1"
User.groups(3).Name = "namn3" & strSpecialNamnstillägg2
User.groups(3).Type = "Type1"
User.groups(4).Name = "namn3" & strSpecialNamnstillägg3
User.groups(4).Type = "Type1"
User.groups(5).Name = "namn4" & strSpecialNamnstillägg1
User.groups(5).Type = "Type1"
User.groups(6).Name = "namn4" & strSpecialNamnstillägg2
User.groups(6).Type = "Type1"
User.groups(7).Name = "namn4" & strSpecialNamnstillägg3
User.groups(7).Type = "Type1"

Jag började skriva kod för att splitta strVariable på | men sen när jag skulle få ihop redimmandet och loopen mm fick jag hjärnsläpp. Jag känner mig helt sne i huvet. Hjälp!

v_Variable = Split(strVariable,"|")
i = ((UBound(v_Variable)+1)*3)+1 'HÄR FICK JAG SLAG!

ReDim Preserve User.Groups(i)

For i = 2 To UBound(User.Groups) Step 3
 '...
Next
mrblondeMedlem sedan aug. 20012 349 inlägg
#2

Jag hade tänkt rätt, i princip blev koden såhär:

   User.Groups(0).Name ="Standard1"
   User.Groups(1).Name = "Standard2"

v_Variable = Split(strVariable,"|")
i = ((UBound(v_Variable)+1)*3)+1 'Detta blev rätt

ReDim Preserve User.Groups(i)

k = 0
For i = 2 To UBound(User.Groups) Step 3
   User.Groups(i).Name = v_Variable(k)
  User.GRoups(i+1).Name = v_Variable(k) & "Special2"
  User.GRoups(i+2).Name = v_Variable(k) & "Special3"
  k = k +1
Next
123 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)