ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 09.04.2001

Diese Seite wurde zuletzt aktualisiert am 09.04.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Geleersamkeit

Zurück...


Anzeige

(-hg) mailto:hg_emptyarray@aboutvb.de

Visual Basic bietet leider keine Möglichkeit festzustellen, ob ein Array bereits dimensioniert ist oder nicht. Eine indirekte Lösung hat sich Microsoft daher bei der Split-Funktion (ab Visual Basic 6 verfügbar) einfallen lassen, um immer ein irgendwie definiertes Array zurückgeben zu können. Konnte die Split-Funktion den ihr übergebenen String erfolgreich zerlegen, ist es kein Problem, die Elemente des zurückgegebenen Arrays von der Untergrenze bis zur Obergrenze zu durchlaufen:

Dim nElements As Variant
Dim l As Long

nElements = Split("abc/def","/")
For l = LBound(nElements) To UBound(nElements)
   ... nElements(l) ...
Next 'l

Selbst wenn keine Teilung vorgenommen werden konnte, weil der Trenn-String nicht im übergebenen String enthalten war, wird genau ein Element zurückgegeben, wenn der übergebene String nicht leer war. Das eine und einzige Element enthält diesen komplett - und die Untergrenze als auch die Obergrenze des Array sind gleich, nämlich gleich 0.

Wurde jedoch ein leerer String übergeben, kann somit auch gar kein Element zurückgegeben werden - es tritt das Dilemma auf, dass hier eigentlich ein Array ohne Elemente zurückgegeben werden müsste. Ein Array ohne Elemente wäre aber ein nicht dimensioniertes Array, bei dem jeder Versuch, eine Untergrenze oder eine Obergrenze zu bestimmen, einen Laufzeitfehler auslösen würde.

Hier hat Microsoft nun den Kunstgriff angewandt, die Split-Funktion ein Array liefern zu lassen, dessen Untergrenze nach wie vor 0 ist, dessen Obergrenze jedoch künstlich auf -1 gesetzt wurde. Der obenstehende Schleifendurchlauf bereitet damit keine Probleme, selbst wenn das Array eben kein Element enthält.

Wenn Sie auch Ihre eigenen Funktionen mit einem solchen Kunstgriff zur Lieferung eines in diesem Sinne brauchbaren "leeren" Arrays bringen wollen, nutzen Sie einfach in Ihrer Funktion die Split-Funktion. Lassen Sie diese ihr wohldefiniertes "leeres" Array als Rückgabewert Ihrer Funktion liefern, falls Ihre Funktion ansonsten bisher ein undimensioniertes Array zurückgegeben hätte. Die einzige Voraussetzung hierbei ist, dass das Array von der Funktion als Variant verkleidet zurückgegeben und auf der Aufrufseite ebenso als Variant angenommen wird.

Zum Beispiel könnte das so aussehen:

Public Function GetArray(Parameter...) As Variant
  Dim nArray() As Long
  
  ' ...
  If Irgendwas Then
    ReDim nArray(1 To 3)
    nArray(1) = 1
    nArray(2) = 2
    nArray(3) = 3
    GetArray = nArray
  Else
    GetArray = Split("")
  End If
End Function

Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer