Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585

    Problema funzione buildTree e array

    Ciao a Tutti,

    nella mia pagina asp ho creato un array che ospita le cartelle e i files presenti in una certa cartella virtuale;
    mi sono accorto pero' che SOLO in corrispondenza dell' ultima "subfolder" i files presenti in essa vengono memorizzati nell' array 2 o 3 volte (a seconda del contenuto in files dell' ultima "subfolder").

    Come mai ??

    Grazie mille in anticipo !!


    <%@ Language=VBScript %>
    <%
    Option Explicit
    Dim arr_dir(3000), arr_vf(15000), fso, path, theFolder, theSubfolders, subfolder, theFiles, file, x, y
    '
    '
    function buildTree(theFSO, thePath)
    set theFolder = theFSO.getFolder(thePath)
    set theSubfolders = theFolder.subfolders
    for each subfolder in theSubfolders
    x = x + 1
    arr_dir(x) = subfolder.name
    response.write x & "dir: " & subfolder.name & "
    "
    call buildTree(theFSO, subfolder)
    next
    set theSubfolders = nothing
    set theFiles = theFolder.files
    for each file in theFiles
    y = y + 1
    arr_vf(y) = file.name
    response.write y & "file: " & file.name & "
    "
    next
    end function
    '
    '
    %>
    ....
    <BODY>
    <%
    '
    path = server.mapPath("/path_virtual_dir/")
    set fso = server.createObject("Scripting.FileSystemObject")
    call buildTree(fso, path)
    '
    set fso = nothing : set theFolder = nothing : set theFiles = nothing
    '
    %>

    </BODY>

  2. #2
    Prova con un controllo del tipo:

    codice:
    if (file.name<>"") then
        y=y+1
        response.write y & "file: " & file.name & "
    "
    end if
    Forse il FSO "vede" dei file di sistema.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Ho provato come mi hai detto,
    e per questo ti ringrazio,

    ma il risultato e' lo stesso ... non ci sono files nascosti e tuttora non riesco a capire come mai si comporta cosi' SOLO alla fine

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Ho visto che il problema non risiede tanto nell' array, proprio nel costrutto della funzione stessa.

    quando si arriva all' ultima cartella, per qualche motivo si passa alla ripetizione dei files ...

    Come mai ???

    Forzare l' uscita dalla funzione potrebbe essere una via, ma secondo me occorre capire perche' cio' si verifica ...


    <%@ Language=VBScript %>
    <%
    Option Explicit
    Dim fso, path, theFolder, theSubfolders, subfolder, theFiles, file
    '
    function buildTree(theFSO, thePath)
    '
    set theFolder = theFSO.getFolder(thePath)
    set theSubfolders = theFolder.subfolders
    for each subfolder in theSubfolders
    response.write "dir: " & subfolder.name & "
    "
    call buildTree(theFSO, subfolder)
    next
    set theSubfolders = nothing
    '
    set theFiles = theFolder.files
    for each file in theFiles
    response.write "file: " & file.name & "
    "
    next

    end function

    path = server.mapPath("/path_dir/")
    set fso = server.createObject("Scripting.FileSystemObject")
    call buildTree(fso, path)
    '
    set fso = nothing : set theFolder = nothing : set theFiles = nothing
    '
    '
    %>

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Il problema mi e' stato risolto cosi':

    <%@ Language=VBScript %>
    <%
    sub DirectoryTree(path)

    dim fs, folder, item

    set fs = CreateObject("Scripting.FileSystemObject")
    set folder = fs.GetFolder(path)

    'Display the target folder and info.

    Response.Write("" & folder.Name & "")
    Response.Write("
    " & vbCrLf)

    'Display a list of files.

    Response.Write("<ul>")
    for each item in folder.Files
    Response.Write("[*]" & item.Name & "" & vbCrLf)
    next
    Response.Write("[/list]")

    'Display a list of sub folders.

    for each item in folder.SubFolders
    DirectoryTree(item.Path)
    next

    end sub

    path = Server.MapPath("/virtual_path_dir/")

    Call DirectoryTree(path)
    %>


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.