Hej Detta kan var ett sätt att fixa det. Om du skall dimensionera en dynamiskt array, kan det vara effektivare att göra det med råger. Så att du dimensionera om den ett mindre antal gånger. Jans lösning ger det jag sökte... använder nog den så länge... hmmm. ne det blev inte bra heller, bättre att alltid ha en extra plats sist tror jag... några förslag? arrayen används på många ställen utan att det syns för användaren... och på bara två ställen kan användaren justera arrayen. Det var då lättare att dima arrayen i form_Load med en plats och därigenom alltid ha en plats tom på slutet. Då slipper jag ha checkar överallt och istället så visar jag inte den sista platsen de två gånger användaren är med o leker... Vad är det du skall göra? hehe OK sorry...DynArray problem...
Hur vet man om sin dynamiska arry är redimad eller inte...?
typ
<code>
Private sub meck()
Dim dynarray()
... 'en massa saker händer
... ' kanske ReDimas arrayen kanske inte...!?
For i = 0 To Ubound(dynarray) ' här blir det fel om den inte är ReDimad, hur vet jag??
...
next
end sub
</code>
tack på förhand...Sv: DynArray problem...
<code>
Private Sub main()
Dim dynarray()
Debug.Print "1. " & HasDimension(dynarray)
ReDim dynarray(3)
Debug.Print "2. " & HasDimension(dynarray)
End Sub
Public Function HasDimension(anArray()) As Boolean
Dim blnResult As Boolean
On Error Resume Next
blnResult = CBool(UBound(anArray) - LBound(anArray) + 1)
HasDimension = blnResult
End Function
</code>
Du kan ju då använda ditt exempel på följande sätt
<code>
Private sub meck()
Dim dynarray()
... 'en massa saker händer
... ' kanske ReDimas arrayen kanske inte...!?
If HasDimension(dynarray) then
For i = 0 To Ubound(dynarray)
...
next
End If
end sub
</code>
//
JanneSv: DynArray problem...
T.Ex:
<code>
Private sub meck()
Dim dynarray()
Dim Size As Long
Dim Count As Long
Size = 10
Redim dynarray(1 to Size)
Do Until rs.EOF
If Count > Size Then
Size = Size * 2
Redim Preserve dynarray(1 To Size)
End If
Count = Count + 1
dynarray(Count) = rs("Id")
rs.MoveNext
Loop
If Count Then
Redim Preserve dynarray(1 To Count)
Else
Erase dynarray
End If
For i = 1 To Count
'...
Next
End sub
</code>Sv: DynArray problem...
Men det borde väl vara ett relativt vanligt problem eller!? Måste ju finnas en snygg "oneliner" eller vad det kallas.
Och tappar man inte lite av vinsten med en dynarray om man ändå ska hålla koll på vad som finns i den med egna räknare...?
heppSv: DynArray problem...
Sv: DynArray problem...
så det var inget fel på din rutin men ska man använda den så ska det göras från början ;)Sv: DynArray problem...
Det verkar vara en mycket skum lösning. En användare ska inte pilla i en arrays strolek. Om du förklarar vad du vill göra kan vi nog ge tips om hur du borde lösa det istället.Sv: DynArray problem...
Jag har en dynarr som innehåller en egen typ (kurva med massa X&Y-värden). Kurvorna ska sparas till en fil om det finns några (det e färdigt...).
Kurvorna ska hämtas från filen, om den finns, vid uppstart och arrayen redimmas då utan problem... men...
mitt problem är
...om det inte finns någon fil så redimmas aldrig arrayen, dock ska det ju va möjligt att lägga till en ny kurva dvs redimma en ny plats, men jag vill att proget ska fatta att den inte ska loopa en massa med en array som inte finns/eller innehåller något...och då är vi tebax till mitt första inlägg... :)
kanske krånglar jag till det, men då är det ju bra att man frågar...!?