Avatar billede ingeman Seniormester
28. marts 2004 - 14:56 Der er 21 kommentarer og
1 løsning

Omskriv function til at hente filnavne

function buildSelect(foldspec)
    Dim fso,bsFold,StrFoldere,Folder,dc,d

    Set fso=Server.CreateObject("Scripting.FileSystemObject")
    Set dc = fso.Drives

' Gennemløb array med en løkkedrevbogstav
    For Each d in dc
        Set d = fso.GetDrive(d.driveletter+":")
        If d.DriveType=2 then
            If fso.FolderExists(d.driveletter+":"+foldspec) = true Then Set bsFold=fso.GetFolder(d.driveletter+":"+foldspec)
        end if
    next

    strFoldere=""
    for each folder in bsFold.SubFolders
        strFoldere=Strfoldere & "<OPTION VALUE='" & folder.Name & "'"
          StrFoldere=StrFoldere &  ">" &  folder.Name & "</OPTION>" & vbcrlf
    next
    BuildSelect=strFoldere

    set fso=nothing
    set dc=nothing
    set bsfold=nothing
end function

Jeg ovenstående til at hente folder navne - skal omskrives til
at hente filnavne istedet uden ext.
Skal bruges til select box
Avatar billede ingeman Seniormester
28. marts 2004 - 14:56 #1
<TD><SELECT class="inputs2" size="0" name="ZID" onChange=""><%=BuildSelect("\Borland\label\designs")%>
                                  </select>
                          </td>
Avatar billede eagleeye Praktikant
28. marts 2004 - 15:04 #2
Du kan rette det som laver strFoldere til dette:

    strFile=""
    for each file in bsFold.Files
        efternavn=fso.GetExtensionName(file.Name)
        if efternavn<>"" then efternavn="."&efternavn
        filnavn = replace(file.Name, efternavn,"")
        strFile=StrFile & "<OPTION VALUE='" & filnavn & "'"
        strFile=StrFile &  ">" &  filnavn & "</OPTION>" & vbcrlf
    next
    BuildSelect=strFile
Avatar billede ingeman Seniormester
28. marts 2004 - 16:00 #3
function buildSelect(foldspec)
    Dim fso,bsFold,StrFile,Folder,dc,d,efternavn,filnavn

    Set fso=Server.CreateObject("Scripting.FileSystemObject")
    Set dc = fso.Drives

' Gennemløb array med en løkkedrevbogstav
    For Each d in dc
        Set d = fso.GetDrive(d.driveletter+":")
        If d.DriveType=2 then
            If fso.FolderExists(d.driveletter+":"+foldspec) = true Then Set bsFold=fso.GetFolder(d.driveletter+":"+foldspec)
        end if
    next

    strFile=""
    for each file in bsFold.Files
        efternavn=fso.GetExtensionName(file.Name)
        if efternavn<>"" then efternavn="."&efternavn
        response.write efternavn
        filnavn = replace(file.Name, efternavn,"")
        strFile=StrFile & "<OPTION VALUE='" & filnavn & "'"
        strFile=StrFile &  ">" &  filnavn & "</OPTION>" & vbcrlf
    next
    BuildSelect=strFile

    set fso=nothing
    set dc=nothing
    set bsfold=nothing
end function

Jeg kan ikke det til at køre ?
Avatar billede ingeman Seniormester
28. marts 2004 - 16:03 #4
Hvad kan der være galt ?
Avatar billede eagleeye Praktikant
28. marts 2004 - 16:08 #5
Hvad melder den af fejl?
Avatar billede ingeman Seniormester
28. marts 2004 - 16:09 #6
Ingen den stopper ud fejl ?
Avatar billede ingeman Seniormester
28. marts 2004 - 16:10 #7
den returner tom selectbox
Avatar billede eagleeye Praktikant
28. marts 2004 - 16:11 #8
og du klader den på samme måde en med sti til hvor filerne skal findes?
Avatar billede ingeman Seniormester
28. marts 2004 - 16:13 #9
<TD><SELECT class="inputs2" size="0" name="ZID" onChange="" style="width:110px;"><%=BuildSelect("\Borland\label\designs")%>
                                  </select>
                          </td>

I folderen \Borland\label\designs ligger der en masse filer som skal ind i selectbox
Avatar billede eagleeye Praktikant
28. marts 2004 - 16:20 #10
hmm det forstår jeg ikke helt. Umiddelbart kan jeg ikke se noget som er vilt galt.
Jeg kan se du har tilføjet en linje:
response.write efternavn

udskriver den noget??
Prøv evt at udskrive stien før for eact linjen.

response.write bsFold.name
Avatar billede ingeman Seniormester
28. marts 2004 - 16:27 #11
Den udskriver ikke noget. - koden stopper
Avatar billede eagleeye Praktikant
28. marts 2004 - 16:30 #12
Har du en On Error Resume Next i koden?
Avatar billede ingeman Seniormester
28. marts 2004 - 16:32 #13
function buildSelect(foldspec)
    Dim fso,bsFold,StrFile,Folder,dc,d,efternavn,filnavn

    Set fso=Server.CreateObject("Scripting.FileSystemObject")
    Set dc = fso.Drives


' Gennemløb array med en løkkedrevbogstav
    For Each d in dc
        Set d = fso.GetDrive(d.driveletter+":")
        If d.DriveType=2 then
            If fso.FolderExists(d.driveletter+":"+foldspec) = true Then Set bsFold=fso.GetFolder(d.driveletter+":"+foldspec)
        end if
    next

    strFile=""
    for each file in bsFold.Files
        efternavn=fso.GetExtensionName(file.Name)
        if efternavn<>"" then efternavn="."&efternavn
        filnavn = replace(file.Name, efternavn,"")
        strFile=StrFile & "<OPTION VALUE='" & filnavn & "'"
        strFile=StrFile &  ">" &  filnavn & "</OPTION>" & vbcrlf
    next
    BuildSelect=strFile

    set fso=nothing
    set dc=nothing
    set bsfold=nothing
end function

<TD><SELECT class="inputs2" size="0" name="ZID" onChange="" style="width:110px;"><%=BuildSelect("\Borland\label\designs")%>
                                  </select>
                          </td>

Det er koden.
Avatar billede eagleeye Praktikant
28. marts 2004 - 16:38 #14
Ja men kode stopper ikke bare uden at melde fejl, men mindre man har slået fejl visning fra.
Virkede koden da den listede foldere?
Avatar billede ingeman Seniormester
28. marts 2004 - 16:48 #15
function buildSelect(foldspec)
    Dim fso,bsFold,StrFoldere,Folder,dc,d

    Set fso=Server.CreateObject("Scripting.FileSystemObject")
    Set dc = fso.Drives

' Gennemløb array med en løkkedrevbogstav
    For Each d in dc
        Set d = fso.GetDrive(d.driveletter+":")
        If d.DriveType=2 then
            If fso.FolderExists(d.driveletter+":"+foldspec) = true Then Set bsFold=fso.GetFolder(d.driveletter+":"+foldspec)
        end if
    next

    strFoldere=""
    for each folder in bsFold.SubFolders
        strFoldere=Strfoldere & "<OPTION VALUE='" & folder.Name & "'"
          StrFoldere=StrFoldere &  ">" &  folder.Name & "</OPTION>" & vbcrlf
    next
    BuildSelect=strFoldere

    set fso=nothing
    set dc=nothing
    set bsfold=nothing
end function

<TD><SELECT class="inputs2" size="0" name="ZID" onChange=""><%=BuildSelect("\zfax\users")%>
                                  </select>
                          </td>

Den her kører som den skal og viser folderne - men jeg oplever at de fejl der sker
inde sub functionen melder browseren ikke fejl til mig den stopper bare- den melder
feks ikke fejl hvis der mangler at bliver Dim en variabel ?
Avatar billede eagleeye Praktikant
28. marts 2004 - 17:03 #16
ok, og folderen findes naturligvis sådan den kan finde den i dette loop?
    For Each d in dc
        Set d = fso.GetDrive(d.driveletter+":")
        If d.DriveType=2 then
            If fso.FolderExists(d.driveletter+":"+foldspec) = true Then Set bsFold=fso.GetFolder(d.driveletter+":"+foldspec)
        end if
    next
Avatar billede ingeman Seniormester
28. marts 2004 - 17:31 #17
function buildSelect(foldspec)   
    Dim fso,bsFold,dc,d,strfile,file,efternavn,filnavn

    Set fso=Server.CreateObject("Scripting.FileSystemObject")
    Set dc = fso.Drives

' Gennemløb array med en løkkedrevbogstav
    For Each d in dc
        Set d = fso.GetDrive(d.driveletter+":")
        If d.DriveType=2 then
            If fso.FolderExists(d.driveletter+":"+foldspec) = true Then Set bsFold=fso.GetFolder(d.driveletter+":"+foldspec)
        end if
    next

    strFile=""
    for each file in bsFold.Files
        efternavn=fso.GetExtensionName(file.Name)
        if efternavn<>"" then efternavn="."&efternavn
        filnavn = replace(file.Name, efternavn,"")
        strFile=StrFile & "<OPTION VALUE='" & filnavn & "'"
        strFile=StrFile &  ">" &  filnavn & "</OPTION>" & vbcrlf
    next
    BuildSelect=strFile


    set fso=nothing
    set dc=nothing
    set bsfold=nothing
end function

Den her virker - der manglede at blive DIM nogle af de variabler i Sub functionen
Hvorfor melder browseren ikke fejl på manglende DIM i sub functioner ?
Avatar billede eagleeye Praktikant
28. marts 2004 - 17:35 #18
hmm ja det forstår jeg ikke helt.
Man kan slå fejl visning fra sådan koden bare forsætter hvis der er fejl i koden med:
On error resume next
Avatar billede ingeman Seniormester
28. marts 2004 - 17:39 #19
Den viser godt nok fejl - undtagen når det er i en sub function ?
Avatar billede ingeman Seniormester
28. marts 2004 - 17:41 #20
<%
Option Explicit
%>
Så skulle den jo melde fejl hvis der var en variabel der ikke var DIM
Avatar billede eagleeye Praktikant
28. marts 2004 - 17:44 #21
Ja helt enig den skulle melde fejl, hvis man mangler at dim en variable. Men jeg kan ikke svare på hvorfor den ikke melder fejl. Tilsyneladne sker der en fejl, da koden stopper så noget betyder Option Explicit for funktionen.
Avatar billede ingeman Seniormester
28. marts 2004 - 17:56 #22
Ok - det virker ny - tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester