Rubrik: Variablen/Strings · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 03.09.01 |
Funktionsrückgabe: Array Dieses Beispiel zeigt, wie sich ein Array als Ergebnis eines Funktionsaufrufs zurückgeben lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 37.931 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Was viele nicht wissen bzw. vielleicht nur nicht wissen wie, ist: Wie lässt sich ein Array als Ergebnis eines Funktionsaufruf zurückgeben?
Normalerweise ist der Rückgabewert einer Funktion ja meist vom Datentyp String, Long, Integer oder Boolean - wie auch immer, eben nur ein einziger Wert und keine Auflistung von Werten - ein Array eben.
Wenn man nun aber den Rückgabewert der Funktion als Variant deklariert, dann kann das ja alles sein: String, Long, Integer, Boolean oder auch Array!
Also geht's doch - und das sogar ganz einfach!
' Beispiel: Alle Dateien eines Ordners ' lesen und als Array zurückgeben Public Function ReadFilesFromDir(ByVal sPath As String) _ As Variant Dim sFilename As String Dim nCount As Long ReDim sFiles(0) As String If Right$(sPath, 1) <> "\" Then _ sPath = sPath & "\" nCount = 0 sFilename = Dir(sPath & "*.*", vbNormal) While sFilename <> "" If sFilename <> "." And sFilename <> ".." Then ReDim Preserve sFiles(nCount) sFiles(nCount) = sFilename nCount = nCount + 1 End If sFilename = Dir Wend ReadFilesFromDir = sFiles End Function
Der Funktionsaufruf selbst sieht dann so aus:
Dim sPath As String Dim I As Integer Dim sFiles As Variant sPath = "C:\Dokumente" sFiles = ReadFilesFromDir(sPath) ' Anzeige der gefundenen Dateien ' in einer ListBox If sFiles(0) <> "" Then For I = 0 To UBound(sFiles) List1.AddItem sFiles(I) Next I End If
Solch eine Funktion lässt sich natürlich auch in einer Klasse verwenden, die dann z.B. als ActiveX-DLL in das Projekt eingebunden wird. Dies aber nur am Rande...