/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
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



Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408885
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste