hallo ricobautsch,
ich habe die v1.2 installiert und eine frage:
ich lasse mir mehrere folders (zb. c:\pfad1, d:\pfad2, e:\pfad3) in einem verzeichnisbaum anzeigen, dh. ich sehe alle unterverzeichnisse dieser 3 pfade. wie kann ich den original pfad auf das jeweilige unterverzeichnis hinterlegen? zb. \folder_aus_pfad1 --> c:\pfad1\folder_aus_pfad1
sodaß ich beim öffnen des folders auch auf den richtigen pfad komme.
beim öffnen eines folders gibt mir die funktion FsFindFiles nur den gemappten pfad zurück, allerdings nicht den vollen, lokalen.
ich habe mir die neuen funktionen angesehen (FsLinksToLocalFiles und FsGetLocalName) aber die betreffen wohl nur dateien, keine unterverzeichnisse.
danke
Per TC auf Win7 Bibliotheken zugreifen / Wunsch für TC
Moderators: Hacker, Stefan2, white
-
- Member
- Posts: 103
- Joined: 2005-06-21, 00:42 UTC
hallo fuxi,
für das Mapping eines Plugin-Ordners zum realen Ordner muss man als Plugin-Autor im Code natürlich selbst sorgen.
In diesem Fall bietet sich dafür zum Beispiel ein Dictionary an.
Nachfolgend habe ich ein kleines funktionsfähiges Beispielscript geschrieben.
Einfach in der dritten Codezeile das PathArray entsprechend anpassen, dann sollte das Listing und die Anzeige von Dateien mit F3 bereits funktionieren.
für das Mapping eines Plugin-Ordners zum realen Ordner muss man als Plugin-Autor im Code natürlich selbst sorgen.
In diesem Fall bietet sich dafür zum Beispiel ein Dictionary an.
Nachfolgend habe ich ein kleines funktionsfähiges Beispielscript geschrieben.
Einfach in der dritten Codezeile das PathArray entsprechend anpassen, dann sollte das Listing und die Anzeige von Dateien mit F3 bereits funktionieren.
Code: Select all
'*** Declarations
Set fso = CreateObject("Scripting.FileSystemObject")
Set mapping = CreateObject("Scripting.Dictionary")
PathArray = Array("d:\Pfad1", "d:\Pfad2")
class MappingItem
Public PluginPath
Public RealPath
Public IsFolder
End class
CreateMapping
'*** Plugin functions
Function FsFindFiles(ByVal Path)
If Path = "\" Then
CreateMapping
For Each Path In PathArray
CreateListing Path
Next
FsFindFiles = True
Else
CreateListing RemoteNameToLocalName(Path)
FsFindFiles = True
End If
End Function
Function FsLinksToLocalFiles
FsLinksToLocalFiles = True
End Function
Function FsGetLocalName(ByRef RemoteName, ByVal maxlen)
RemoteName = RemoteNameToLocalName(RemoteName)
FsGetLocalName = True
End Function
'*** Helper functions
Sub AddMapping(PluginPath, RealPath, IsFolder)
Set item = new MappingItem
item.PluginPath = PluginPath
item.RealPath = RealPath
item.IsFolder = IsFolder
mapping.Add PluginPath, item
End Sub
Sub CreateMapping
mapping.RemoveAll
For Each Path In PathArray
If fso.FolderExists(Path) Then
Set fldr = fso.GetFolder(Path)
For Each f In fldr.Subfolders
AddMapping f.Name, Path & "\" & f.Name, True
Next
For Each f In fldr.Files
AddMapping f.Name, Path & "\" & f.Name, False
Next
End If
Next
End Sub
Sub CreateListing(Path)
If fso.FolderExists(Path) Then
Set fldr = fso.GetFolder(Path)
For Each f In fldr.Subfolders
Set File = ScriptFiles.Add(f.Name)
With File
.Attributes = f.Attributes
.LastWriteTime = f.DateLastModified
End With
Next
For Each f In fldr.Files
Set File = ScriptFiles.Add(f.Name)
With File
.Attributes = f.Attributes
.Size = f.Size
.LastWriteTime = f.DateLastModified
End With
Next
End If
End Sub
Function RemoteNameToLocalName(RemoteName)
If Mid(RemoteName, 1, 1) = "\" Then
RemoteName = Mid(RemoteName, 2)
End If
Pos = InStr(RemoteName, "\")
If Pos = 0 Then
Set item = mapping.Item(RemoteName)
RemoteNameToLocalName = item.RealPath
else
Set item = mapping.Item(Mid(RemoteName, 1, Pos-1))
RemoteNameToLocalName = item.RealPath & Mid(RemoteName, Pos)
End If
End Function