Array probleem

Plaats reactie
Stino
Plus Member
Plus Member
Berichten: 163
Lid geworden op: 03 jan 2004, 13:49

Code: Selecteer alles

dim maintYear() as Integer
...
...Redim Preserve maintyear(int)...
...
If intNumber > UBound(maintYear) Or intNumber < LBound(maintYear) then Exit Sub


De code op de ... leest een bestand, en stopt de inhoud daarvan in die array. Als het bestand leeg is, heb ik hetvolgende probleem: Subscript out of range als ik UBound(maintYear) opvraag. Wat kan ik hier eventueel aan doen?
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Zelf bijhouden hoe groot je array is ?

Trouwens een "Redim Preserve"... als dat geen performance killer is.

Linked lists heb je waarschijnlijk niet ?
Stino
Plus Member
Plus Member
Berichten: 163
Lid geworden op: 03 jan 2004, 13:49

Damnit, dat ik daar niet aan gedacht heb. Ik hield al bij hoe groot hij was om te ReDimmen, en kan dat dus ook gebruiken om te kijken of hij leeg is...

Thanks r2504.

Over die ReDim Preserve en performance killer...ik sta altijd open voor andere oplossingen :p
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Het is echter wel gek dat die U/LBound functies de mist ingaan. (maar gebruik al enkele jaren geen VB meer)

Het probleem bij Redim preserve is dat er veel geheugen moet gecopieerd worden intern... meer alloceren is namelijk iets dat niet mogelijk is. Het zijn net dergelijke bewerkingen die enorm traag gaan (hoe snel intern geheugen ook mag wezen)

Ideale technieken zijn deze die geheugen alloceren voor zover het nodig is... per element dus, en extra geheugen (welk niet aaneensluiten is) bij alloceren per entry. Nooit linked lists gezien in de cursus C ?

Enfin... de tijd is voorbij dat je echt moeite moest doen voor performance... vandaar misschien ook dat Windows zo traag is :lol:
Plaats reactie

Terug naar “Development”