Hallo zusammen,
mein Programm soll mittels einer Klasse eine Ordnerstruktur nachbilden. Dazu habe ich zwei Structures eingeführt:
- vFileItem entspricht einer Datei
- vFolderItem entspricht einem Ordner.
Diese werden mittels ArrayLists verknüft.
Die Strukturdefinition sieht wie folgt aus:
Public Structure vFileItem
Public sName As String
Public lFileSize As Long
Public sLastModified As String
Public sExtraInfo As String
Public bActivated As Boolean
End Structure
Public Structure vFolderItem
Public sName As String
Public vSubFolders As ArrayList()
Public vFiles As ArrayList()
End Structure Nun muss ich allerdings auch Funktionen implementieren, dies wollte ich so tun:
Private Function AddFile(ByRef vParentFolder As vFolderItem, _
ByVal sName As String) As vFileItem
If Instr(1, sName, "/") > 0 Then
' there's another subfolder -> search subfolders
Dim sTemp As String
sTemp = Left(sName, Instr(1, sName, "\") - 1)
sName = Mid(sName, Instr(1, sName, "\") + 1)
' try to find the subfolder
Try
Dim myEnumerator As System.Collections.IEnumerator = _
vParentFolder.vSubFolders.GetEnumerator()
While myEnumerator.MoveNext()
If CType(myEnumerator.Current, vFolderItem).sName = sTemp Then
' run function recursively with the new subfolder
Return AddFile(myEnumerator.Current, sTemp)
End If
End While
Catch ex As Exception
End Try
' subfolder was not found, create it!
Dim NewFolder As vFolderItem
NewFolder.sName = sTemp
NewFolder.vSubFolders = New ArrayList() ' Fehler 1 =========
NewFolder.vFiles = New ArrayList() ' Fehler 1 ========
With vParentFolder.vSubFolders
.Add(NewFolder) ' Fehler 2 =======
Return AddFile(.Item(.Count - 1)) ' Fehler 2 ======
End With
Else
Try
' search for the file
Dim myEnumerator As System.Collections.IEnumerator = _
vParentFolder.vFiles.GetEnumerator()
While myEnumerator.MoveNext()
If CType(myEnumerator.Current, vFileItem).sName = sName Then
' file does already exist
' return reference to file
Return myEnumerator.Current
End If
End While
Catch ex As Exception
End Try
' file does not already exist -> create
Dim NewFile As vFileItem
NewFile.sName = sName
vParentFolder.vFiles.Add(NewFile) ' Fehler 2 =======
Return CType(vParentFolder.vFiles.Item(vParentFolder.vFiles.Count - 1), _
vFileItem)
End If
End Function Allerdings gibts hier einige Compiler-Fehler:
Fehler1:
Der Wert des Typs "System.Collections.ArrayList" kann nicht zu "1-dimensionales Array von System.Collections.ArrayList" konvertiert werden.
Fehler2:
"Count"/"Add"/"Item" ist kein Member von "System.Array".
Was mache ich hier falsch? vSubFolders und vFiles sind doch ArrayLists?
Danke im Voraus,
Stefan
Web: http://www.vbtricks.de.vu/
VBTricks.de.vu. Meine Webseite zu VB und anderen Programmiersprachen. Verschiedene fortgeschrittene OCXe und komplette Projekte sind im Sourcecode verf?gbar. |