|
| Arrays (newbie) Fra : Mads Kristensen |
Dato : 21-05-02 21:23 |
|
Hej NG
Jeg sidder her og bander "lidt" over arrays i VB, og håber, at en af jer kan
hjælpe mig videre.
Her er min kode:
Dim mitarray() As Integer
if (ubound(mitarray)) then
redim preserve mitarray(ubound(mitarray)+1)
end if
Problemet er selvfølgelig, at arrayet ikke er initialiseret i if-sætningen.
Mit spørgsmål er derfor: Hvordan tester jeg på, om array'et er "dim'et"
inden jeg evt. redimmer det? Findes der en "defined"-metode eller lignende i
VB?
Mvh. Mads
| |
Tomas Christiansen (21-05-2002)
| Kommentar Fra : Tomas Christiansen |
Dato : 21-05-02 21:42 |
|
Mads Kristensen skrev:
> Problemet er selvfølgelig, at arrayet ikke er initialiseret i
if-sætningen.
Hvis du kan erklære det, kan du også foretage den nødvendige
initialisering inden du bruger det:
> Dim mitarray() As Integer
Dim mitarray(0 to 0) 'Initialisering
'Her kommer resten af
'din kode - indtil der hvor
'du vil bruge din tabel
> redim preserve mitarray(ubound(mitarray)+1)
....og ja, der går (hvis du bruger indeks 1 og opefter) sørme TO bytes
til spilde på ét stk. integer i indeks 0, meeen det...
-------
Tomas
| |
Mads Kristensen (22-05-2002)
| Kommentar Fra : Mads Kristensen |
Dato : 22-05-02 06:19 |
|
Tjaeh.. der er vel ingen vel udenom... Tak for hjælpen under alle
omstændigheder.
"Tomas Christiansen" <toc@blikroer.removethis.dk> wrote in message
news:acebec$s5h$1@news.cybercity.dk...
> Mads Kristensen skrev:
> > Problemet er selvfølgelig, at arrayet ikke er initialiseret i
> if-sætningen.
>
> Hvis du kan erklære det, kan du også foretage den nødvendige
> initialisering inden du bruger det:
>
> > Dim mitarray() As Integer
> Dim mitarray(0 to 0) 'Initialisering
> 'Her kommer resten af
> 'din kode - indtil der hvor
> 'du vil bruge din tabel
> > redim preserve mitarray(ubound(mitarray)+1)
>
> ...og ja, der går (hvis du bruger indeks 1 og opefter) sørme TO bytes
> til spilde på ét stk. integer i indeks 0, meeen det...
>
> -------
> Tomas
>
| |
Robert (22-05-2002)
| Kommentar Fra : Robert |
Dato : 22-05-02 12:02 |
|
Hva med den her ?
paste koden.
NB! Redim, og specielt redim preserve er altså nogle resourcekrævende
funktioner - så at forøge et array med 1 hver gang - er noget man bør undgå.
--- Code start ----
Option Explicit
Dim mitarray() As Integer
Private Sub Command1_Click()
Dim blIsArrayInit As Boolean
'ReDim mitarray(1) ' til test
On Error Resume Next
If (UBound(mitarray)) Then
If Err.Number = 0 Then
blIsArrayInit = True
Else
blIsArrayInit = False
End If
End If
On Error GoTo 0
If (blIsArrayInit) Then
ReDim Preserve mitarray(UBound(mitarray) + 1)
Else
ReDim mitarray(1)
End If
End Sub
--- Code end ----
Robert
| |
|
|