04. december 2003 - 09:27Der 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).
<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
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.
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
Synes godt om
Ny brugerNybegynder
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.