Avatar billede aadal_dk Nybegynder
04. december 2003 - 09:27 Der er 4 kommentarer og
1 løsning

Hvodan tjekker man om et araay er tomt!?

Jeg er newbie indenfo VB så det er lidt forvirende at der er flere væredier for ingenting eg. Nothing, Empty og Null. Det er nu lettere med Java :-D.
Jeg har erklærete et array som:
Dim dropdown() as string
og jeg vil nu gerne spørge om det er tomt inden jeg evetuelt putter noget i dem redimmer osv.
den kommer med fjel hele tiden, er der nogen der har den gylde kode til at spørge om et Array er tomt, jeg har prøvet IsEmpty(dropdown), IsNull(dropdwon) men virker ikke, jo isEmpty men ikke efter hensigten(giver False selvom jeg ikke har noget i array'et).
Avatar billede minijensen1 Nybegynder
04. december 2003 - 09:30 #1
If UBound(dropdown) < 0 Then
  MsgBox "Der er ingen data i dit array"
End If

UBound giver dig den sidste post i dit array, som jo må være under 0, når dit array er tomt

har ikke testet det, men se om det virker
Avatar billede bennytordrup Nybegynder
04. december 2003 - 09:39 #2
Erklær følgende i et array:

<Code>
Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long


Public Function IsStringArrayInitialized(sA() As String) As Boolean
    On Error GoTo OnErr
    IsStringArrayInitialized = (SafeArrayGetDim(sA) > 0)
    Exit Function
   
OnErr:
    Debug.print Err.Number & " " Err.Description
    Resume Next
End Function

</Code>
Avatar billede aadal_dk Nybegynder
04. december 2003 - 09:54 #3
minijensen1:
Giver fjelen Subscrip out of range når jeg fyre den af :-(
benny.tordrup:
Kan det passe at man skal lave så meget for så lidt!?
Avatar billede bennytordrup Nybegynder
04. december 2003 - 10:00 #4
Hvis du vil undgå fejlen "Subscript out of range", så ja. Du kan selvfølgelig sætte en On Error resume next ind før checket på ubound.

Men hvad er definitionen på meget? Jeg har erklæret en API-funktion, som jeg så kalder i en VB-funktion. Den funktion kan skrælles ned til følgende:


Public Function IsStringArrayInitialized(sA() As String) As Boolean
    On Error Resume Next
    IsStringArrayInitialized = (SafeArrayGetDim(sA) > 0)
End Function

Spørgsmålet er også hvor mange steder, du har behov for at teste på, om et string array er initialiseret eller ej. Du skal ikke have mange steder, før det er sparet ind i antal kodelinier.
Avatar billede aadal_dk Nybegynder
04. december 2003 - 10:19 #5
Takkker for svarene. Jeg har selv "pruttet" noget kode:
    ReDim ddDatabases(0) ' Bliver kaldt en gang under init.
    If ddDatabases(0) = "" Then
        MsgBox "Der er ingen data i dit array"
    End If
Så må jeg redimme når der er brug for det. Jeg kunne ikke lige få benny's funktion til at virke gav false, men den ser ret lovende ud, tak for det.
-det utroligt er så meget man hader Null-pointer errors når man kode java og utroligt hvor meget man mangler dem i VB :-D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester