[vb] records tellen in een user-defined data type

Pagina: 1
Acties:

  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
Bij records (een user-defined data type) kun je de functie (For Each ....) niet gebruiken om het aantal array elementen te tellen.
Ik heb overal op het forum gezocht en ook op google, ik krijg er alleen weinig uit.

Weet iemand hoe je het aantal items in zo'n array bepaalt, want for each kun je niet gebruiken.

Bij een 1-dimensionale array kun je het aantal items zo bepalen:
Visual Basic:
1
2
3
4
5
For Each X In Kwartaal3
       I = I + 1
Next X
                        
LastIndexNumberOfArray = I


hopelijk heeft iemand een oplossing hiervoor

A smooth sea never made a skilled sailor


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Had een array geen UBound? Althans, in VBScript heb je zo eentje.

Geen idee verder, maar VB.Net heeft de count property bij een array. Geen idee of deze ook al geimplementeerd is in VB6.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
Met ubound bepaal je de laatste gedeclareerde index, althans dat retourneert hij als ik dat gebruik

A smooth sea never made a skilled sailor


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18-08 22:57

Gerco

Professional Newbie

Kun je dan niet gewoon UBound(array) - LBound(Array) + 1 doen?

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
nee want dan returned hij gewoon 100, dat is het getal waar ik de array mee gedeclareerd heb array(100), dus dat werkt niet echt want array is leeg

A smooth sea never made a skilled sailor


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
ik zie daar niets over het aantal array elementen tellen (wel met de for each, alleen dat werkt niet) :D :?

A smooth sea never made a skilled sailor


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

wboard schreef op 11 mei 2003 @ 21:42:
ik zie daar niets over het aantal array elementen tellen (wel met de for each, alleen dat werkt niet) :D :?
Neuh.. Daar nemen ze een collection. :) Maar het was een suggestie, vandaar ook de gokmodus. :)

[ Voor 11% gewijzigd door gorgi_19 op 11-05-2003 21:46 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
mmmmmmmmm................ ik kan het uitproberen ;)

A smooth sea never made a skilled sailor


Verwijderd

je kan toch nog steeds de for loop gebruiken van 0 tot 100 of waar dan ook... ubound()

en kijk gewoon of er iets in zit of niet. of idd. gebruik een collection.

  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
werkt niet echt, moet ik met een ander data type gaan werken, moet ik m'n code gaan wijzigen. Wat al volledig gebaseerd is op een user-defined data type (records), als het echt niet anders kan moet het wel, maar ik zie het graag anders :)

A smooth sea never made a skilled sailor


Verwijderd

Visual Basic:
1
2
3
if array(x).udt.field <> 0 then
 counter=counter+1
end if


etc... daarmee count je dus alleen de items waarbij het integer field een waarde bevat, en voor een string "" etc.. maar voor een collection zou je niet zoveel hoeven te herschrijven

collection.add
collection.count
collection.remove

zijn toch simpele regeltjes?

  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
ja, dan moet ik maar ff met collection gaan werken :D

A smooth sea never made a skilled sailor


  • nljuggler
  • Registratie: Juni 2002
  • Laatst online: 09-11-2021
Kun je er niet gewoon voor zorgen dat de array altijd even groot is als het aantal records dat erin staat?

Dit kan je doen door er een dynamische array van te maken en deze iedere keer dat je er een record aan toevoegt te Redim-men (Redim commando).

Dan kan je wel de eerder voorgestelde "UBound(array) - LBound(Array) + 1" gebruiken naar mijn idee.

If Newton was a juggler, he would have caught the apple...


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

Als je array regelmatig van grote veranderd, is iedere keer redimmen niet zo heel snel. Ik heb het ooit weleens getest met een simpele string-array, en per blok redimmen (zeg per 100, of 1000, of meer...) was stukken sneller dan iedere keer voor 1 item redimmen.

Exact expert nodig?

Pagina: 1