/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Et punktum for meget
Fra : Erik Ginnerskov


Dato : 30-01-10 01:19

Hej gruppe.

Jeg har dette script, der lister en række pdf-filer i en undermappe og
etablerer links til dem:

<%
Response.write "<table summary=''>"
Function GetSubFolderFile(sti)
Dim strNySti, fs, f, files, fc, f1, f2
Response.Write "<tr><td>" & sti & "</td><td></td></tr>" & vbcrlf
If Right(sti,1) <> "/" Then
sti = sti + "/gamle_breve/"
End if

Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(Server.MapPath(sti))
Set files = f.Files
For Each f2 in files
If LCase(Right(f2.name, 3)) = "pdf" Then
Response.Write "<tr><td><a class='tlink' href='pdf/" & f2.name & "'>" &
f2.name & "</a>&nbsp;&nbsp;</td>" & _
"<td>Ændret: " & f2.DateLastModified & "</td></tr>" & vbcrlf
End If
Next

Set fc = f.SubFolders
For Each f1 in fc
strNySti = sti & f1.name
GetSubFolderFile(strNySti)
Next
Set fs = Nothing
Set f = Nothing
Set files = Nothing
Set fc = Nothing
End Function
GetSubFolderFile(".")
Response.write "</table>"
%>

Det fungerer fint på nær, at det starter med at sætte en række med et
punktum i celle 1 og en tom celle 2 inden rækkerne med oplistede pdf-filer.

Denne første række vil jeg gerne være fri for.

--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk



 
 
Stig Johansen (30-01-2010)
Kommentar
Fra : Stig Johansen


Dato : 30-01-10 04:20

Erik Ginnerskov wrote:

> Hej gruppe.
>
> Jeg har dette script, der lister en række pdf-filer i en undermappe og
> etablerer links til dem:
....
> Function GetSubFolderFile(sti)
...
> Response.Write "<tr><td>" & sti & "</td><td></td></tr>" & vbcrlf
...
> GetSubFolderFile(".")
.....

> Det fungerer fint på nær, at det starter med at sætte en række med et
> punktum i celle 1 og en tom celle 2 inden rækkerne med oplistede
> pdf-filer.
>
> Denne første række vil jeg gerne være fri for.

Jeg har snippet lidt i ovenstående, så det fremgår at du ukritisk udskriver
'.' som det første.

Du kan løse det ved at indføre eb level, og teste på denne.
Så hvis du retter til:
Function GetSubFolderFile(sti,level)
....
if level > 0 then Response.Write "<tr><td>" & sti ...osv
....
    GetSubFolderFile(strNySti,level+1)
.....
GetSubFolderFile(".",0)

Så burde den være der.

--

Med venlig hilsen
Stig Johansen

Erik Ginnerskov (30-01-2010)
Kommentar
Fra : Erik Ginnerskov


Dato : 30-01-10 17:03

Stig Johansen wrote:
> Jeg har snippet lidt i ovenstående, så det fremgår at du ukritisk
> udskriver '.' som det første.
>
> Du kan løse det ved at indføre eb level, og teste på denne.
> Så hvis du retter til:
> Function GetSubFolderFile(sti,level)
> ...
> if level > 0 then Response.Write "<tr><td>" & sti ...osv
> ...
> GetSubFolderFile(strNySti,level+1)
> ....
> GetSubFolderFile(".",0)
>
> Så burde den være der.

Jeg ved ikke, om jeg har tolket det rigtigt. Nu ser scriptet sådan ud:

<%
Response.write "<table summary=''>"
Function GetSubFolderFile(sti,level)
Dim strNySti, fs, f, files, fc, f1, f2
if level > 0 then Response.Write "<tr><td>" & sti & "</td><td></td></tr>"
& vbcrlf
If Right(sti,1) <> "/" Then
sti = sti + "/pdf/"
End if
End if 'linje 21

Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(Server.MapPath(sti))
Set files = f.Files
For Each f2 in files
If LCase(Right(f2.name, 3)) = "pdf" Then
Response.Write "<tr><td><a class='tlink' href='pdf/" & f2.name & "'>" &
f2.name & "</a>&nbsp;&nbsp;</td>" & _
"<td>Ændret: " & f2.DateLastModified & "</td></tr>" & vbcrlf
End If
Next

Set fc = f.SubFolders
For Each f1 in fc
strNySti = sti & f1.name
GetSubFolderFile(strNySti,level+1) 'linje 34
Next
Set fs = Nothing
Set f = Nothing
Set files = Nothing
Set fc = Nothing
End Function
GetSubFolderFile(".",0)
Response.write "</table><p>&nbsp;</p>"
%>

Det giver en fejl i linje 21:

'Function' var ventet

Udkommenterer jeg den "End if" får jeg fejl i linje 34:

Der kan ikke bruges parenteser ved kald af en Sub
GetSubFolderFile(strNySti,level+1)

--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk



Stig Johansen (30-01-2010)
Kommentar
Fra : Stig Johansen


Dato : 30-01-10 17:58

"Erik Ginnerskov" <erik.ginnerskov@live.dk> wrote in message
news:4b645851$0$273$14726298@news.sunsite.dk...

> Det giver en fejl i linje 21:
>
> 'Function' var ventet
>
> Udkommenterer jeg den "End if" får jeg fejl i linje 34:

Der skal ikke være end if hvis man skriver det på samme linie.

> Der kan ikke bruges parenteser ved kald af en Sub
> GetSubFolderFile(strNySti,level+1)

Det gør den sørme også her.
Jeg havde undret mig over at du bruger en unction, når der ikke er et
resultat, men lav det om til en Sub (som det jo egentlig er).

Jeg lavede en lille test, og følgende rettelser virker her:
.....
Sub GetSubFolderFile(sti,level)
.....
if level > 0 then Response.Write ..osv
.....
For Each f1 in fc
strNySti = sti & "/" & f1.name
GetSubFolderFile strNySti,level+1
(du mangler vist den der "/")
.....
End Sub
GetSubFolderFile ".",0
.....

--
Med venlig hilsen/Best regards
Stig Johansen




Erik Ginnerskov (31-01-2010)
Kommentar
Fra : Erik Ginnerskov


Dato : 31-01-10 13:44

Stig Johansen wrote:

> Det gør den sørme også her.
> Jeg havde undret mig over at du bruger en unction, når der ikke er et
> resultat, men lav det om til en Sub (som det jo egentlig er).
>
> Jeg lavede en lille test, og følgende rettelser virker her:
> ....
> Sub GetSubFolderFile(sti,level)
> ....
> if level > 0 then Response.Write ..osv
> ....
> For Each f1 in fc
> strNySti = sti & "/" & f1.name
> GetSubFolderFile strNySti,level+1
> (du mangler vist den der "/")
> ....
> End Sub
> GetSubFolderFile ".",0
> ....

Det virker, men bare ikke som forventet:

<%
Response.write "<table summary=''>"
Sub GetSubFolderFile(sti,level)
Dim strNySti, fs, f, files, fc, f1, f2
Response.Write "<tr><td>" & sti & "</td><td></td></tr>" & vbcrlf
If Right(sti,1) <> "/" Then
sti = sti + "/pdf/"
End if

Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(Server.MapPath(sti))
Set files = f.Files
For Each f2 in files
If LCase(Right(f2.name, 3)) = "pdf" Then
if level > 0 then Response.Write "<tr><td><a class='tlink' href='pdf/" &
f2.name & "'>" & f2.name & "</a>&nbsp;&nbsp;</td>" & _
"<td>Ændret: " & f2.DateLastModified & "</td></tr>" & vbcrlf
End If
Next

Set fc = f.SubFolders
For Each f1 in fc
strNySti = sti & "/" & f1.name
GetSubFolderFile strNySti,level+1
Next
Set fs = Nothing
Set f = Nothing
Set files = Nothing
Set fc = Nothing
End Sub
GetSubFolderFile ".",0
Response.write "</table><p>&nbsp;</p>"
%>

.... ingen fejlmeddelelser, ingen oplistede pdf'er, men punktummet er der
stadig.

--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk



Erik Ginnerskov (31-01-2010)
Kommentar
Fra : Erik Ginnerskov


Dato : 31-01-10 15:10

Erik Ginnerskov wrote:

> ... ingen fejlmeddelelser, ingen oplistede pdf'er, men punktummet er
> der stadig.

Løsningen var så enkel:

<%
Response.write "<ul>"
Function GetSubFolderFile(sti)
Dim strNySti, fs, f, files, fc, f1, f2
Response.Write "<tr><td>" & sti & "</td><td></td></tr>" & vbcrlf
If Right(sti,1) <> "/" Then
sti = sti + "/pdf/"
End if

Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(Server.MapPath(sti))
Set files = f.Files
For Each f2 in files
If LCase(Right(f2.name, 3)) = "pdf" Then
Response.Write "<li><a class='tlink' href='pdf/" & f2.name & "'>" &
f2.name & "</a></li>" & vbcrlf
End If
Next

Set fc = f.SubFolders
For Each f1 in fc
strNySti = sti & f1.name
GetSubFolderFile(strNySti)
Next
Set fs = Nothing
Set f = Nothing
Set files = Nothing
Set fc = Nothing
End Function
GetSubFolderFile("")
Response.write "</ul><p>&nbsp;</p>"
%>

Lavede det forresten i samme ombæring om fra tabel til liste og fjernede
referencen til datoen for seneste ændring.

--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk



Erik Ginnerskov (31-01-2010)
Kommentar
Fra : Erik Ginnerskov


Dato : 31-01-10 15:19

Erik Ginnerskov wrote:
> Erik Ginnerskov wrote:
>
>> ... ingen fejlmeddelelser, ingen oplistede pdf'er, men punktummet er
>> der stadig.
>
> Løsningen var så enkel:

Og så alligevel ikke. Det fungerede fint lokalt, men ikke da det blev lagt
ud på nettet.

Microsoft VBScript runtime error '800a004c'
Path not found
path/page.asp, line 35

Linje 35:
Set f = fs.GetFolder(Server.MapPath(sti))

--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk



Stig Johansen (31-01-2010)
Kommentar
Fra : Stig Johansen


Dato : 31-01-10 16:47

"Erik Ginnerskov" <erik.ginnerskov@live.dk> wrote in message
news:4b659168$0$278$14726298@news.sunsite.dk...
> Erik Ginnerskov wrote:
> Microsoft VBScript runtime error '800a004c'
> Path not found
> path/page.asp, line 35
>
> Linje 35:
> Set f = fs.GetFolder(Server.MapPath(sti))

Mon ikke det er fordi dyu mangler den der "/" ?
Jeg lavede den der test ud fra din kode (dog med jpg):
http://w-o-p-r.dk/gallery/deleteme.asp

Kildekoden er her:
<%
Response.write "<table summary=''>"
Sub GetSubFolderFile(sti,level)
Dim strNySti, fs, f, files, fc, f1, f2
if level > 0 then Response.Write "<tr><td>" & sti & "</td><td></td></tr>"
& vbcrlf
If Right(sti,1) <> "/" Then
' sti = sti + "/gamle_breve/"
End if

Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(Server.MapPath(sti))
Set files = f.Files
For Each f2 in files
If LCase(Right(f2.name, 3)) = "jpg" Then
Response.Write "<tr><td><a class='tlink' href='"+sti+"/" & f2.name & "'>"
& f2.name & "</a>&nbsp;&nbsp;</td>" & _
"<td>Ændret: " & f2.DateLastModified & "</td></tr>" & vbcrlf
End If
Next

Set fc = f.SubFolders
For Each f1 in fc
strNySti = sti & "/" & f1.name
GetSubFolderFile strNySti,level+1
Next
Set fs = Nothing
Set f = Nothing
Set files = Nothing
Set fc = Nothing
End Sub
GetSubFolderFile ".",0
Response.write "</table>"
%>

Du kan også få koden til mit sitemap, hvis det kan give lidt inspiration til
rekursive lister af filer/links:

<%@ LANGUAGE = VBScript %><% Option Explicit %><!--#include
virtual="/include_files/wopr.first.level.inc.asp"--><%
Dim ExcludeDirs
Dim ExcludeNames
Dim ExcludeTypes
Dim AsHTML
Dim AsXML
Dim AsRSS
Dim Host
Dim rootPath
Dim Weekdaynames
Dim Monthnames
Dim Startfolder
Dim ShowAll

Host = "http://"+ Request.Servervariables("HTTP_HOST")

%><!--#include virtual="/include_files/sitemap.exclude.inc.asp"--><%
Response.ContentType="text/xml; charset=utf8"

Weekdaynames = Array("Son","Mon","Tue","Wed","Thu","Fri","Sat")
Monthnames =
Array("Jan","Feb","Mar","Apr","May","Jun","Kil","Auf","Sep","Oct","Now","Dec
")

' prolog must be without any spaces
%><?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<%

rootPath = Server.MapPath("/")

ListFolderContents(Startfolder)
%></urlset>
<%

'****************************** Sub and Functions
******************************
sub ListFolderContents(path)

ShowAll = false
if Request.QueryString("showall") <> "" then ShowAll = true

if Pathexcluded(path) then exit sub

dim fs, folder, file, item, url

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

'Display a list of sub folders.

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

'Display a list of files.

for each item in folder.Files
if ShowThisFile (item.Name) then
url = MapURL(item.path)
url = Host + url
%><url>
<loc><% = url %></loc>
<lastmod><%
'-------------- Skal laves, så den bruger dd. ved .ASP m.v. sider
Response.Write cStr(DatePart("yyyy",Now())) + "-" + _
nn(DatePart("m",Now())) + "-" + _
nn(DatePart("d",Now()))
%></lastmod>
<changefreq>always</changefreq>
</url>
<%
end if
next
end sub
'-----------------------------------------------------------------------
function MapURL(path)

dim url

'Convert a physical file path to a URL for hypertext links.

url = Right(path, Len(path) - Len(rootPath))
MapURL = Replace(url, "\", "/")

end function
'-----------------------------------------------------------------------
Function nn(inputnumber)
if inputnumber > 9 then
nn = cStr(inputnumber)
else
nn = "0" + cStr(inputnumber)
end if
end function
'-----------------------------------------------------------------------
function Pathexcluded(path)
Dim i
Pathexcluded = false
if ShowAll then exit Function
for i = 0 to uBound(ExcludeDirs)
if inStr(lCase(path),ExcludeDirs(i)) then Pathexcluded = true
next
end function
'-----------------------------------------------------------------------
function ShowThisFile(name)
Dim i
ShowThisFile = true
if ShowAll then exit Function
for i = 0 to uBound(ExcludeNames)
if inStr( lCase(name),ExcludeNames(i)) then ShowThisFile = false
next
for i = 0 to uBound(ExcludeTypes)
if Right(lCase(name),len(ExcludeTypes(i))) = ExcludeTypes(i) then
ShowThisFile = false
next
end function
'-----------------------------------------------------------------------
%>

--
Med venlig hilsen/Best regards
Stig Johansen




Erik Ginnerskov (31-01-2010)
Kommentar
Fra : Erik Ginnerskov


Dato : 31-01-10 18:40

Stig Johansen wrote:

> Mon ikke det er fordi dyu mangler den der "/" ?
> Jeg lavede den der test ud fra din kode (dog med jpg):
> http://w-o-p-r.dk/gallery/deleteme.asp

Jeg har lige konstateret, at der åbenbart er forskel på, om scriptet ligger
i roden eller i en undermappe. Ligger det i roden - det gør det lokalt -
virker det. Ligger det i en undermappe - det gjorde det i første test på
nettet - virker det ikke. Scriptet refereret i mit indlæg kl. 15:09.

> Kildekoden er her:

Kigger jeg på ved lejlighed. Nu har jeg fået det til at fungere der - på en
omdøbt side, hvor det skal ligge. Men tak for input.

--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk



Stig Johansen (01-02-2010)
Kommentar
Fra : Stig Johansen


Dato : 01-02-10 10:22

Erik Ginnerskov wrote:

> Jeg har lige konstateret, at der åbenbart er forskel på, om scriptet
> ligger i roden eller i en undermappe. Ligger det i roden - det gør det
> lokalt - virker det. Ligger det i en undermappe - det gjorde det i første
> test på nettet - virker det ikke. Scriptet refereret i mit indlæg kl.
> 15:09.
>
>> Kildekoden er her:
>
> Kigger jeg på ved lejlighed. Nu har jeg fået det til at fungere der - på
> en omdøbt side, hvor det skal ligge. Men tak for input.

Det er lidt svært at finde ud af hvad du vil (missing link,Erik), men du kan
få lidt flere impulser fra:
<http://w-o-p-r.dk/storm.monitor/storm.monitor.asp.txt>

Der er også tale om rekursive lister af indhold.

--
Med venlig hilsen
Stig Johansen

Erik Ginnerskov (02-02-2010)
Kommentar
Fra : Erik Ginnerskov


Dato : 02-02-10 16:17

Stig Johansen wrote:

> Det er lidt svært at finde ud af hvad du vil (missing link,Erik),

http://ginnerskov.dk/filliste.asp viser mit script fra 31/1 15:09.
http://ginnerskov.dk/filliste2.asp viser dit script fra 31/1 16:47.

Begge scripts fejler, hvis der i den scannede mappe er en undermappe. Begge
scripts har yderligere den fejl, at de viser tilstedeværende undermapper i
den scannede mappe, hvilket kan være en sikkerhedsrisiko.

> men
> du kan få lidt flere impulser fra:
> <http://w-o-p-r.dk/storm.monitor/storm.monitor.asp.txt>

Den kan jeg ikke lige overskue. Den inkluderer også en md5-rutine, jeg ikke
disponerer over.

--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk



Stig Johansen (02-02-2010)
Kommentar
Fra : Stig Johansen


Dato : 02-02-10 20:32

"Erik Ginnerskov" <erik.ginnerskov@live.dk> wrote in message
news:4b6841fe$0$275$14726298@news.sunsite.dk...
> Stig Johansen wrote:
>
> > Det er lidt svært at finde ud af hvad du vil (missing link,Erik),
>
> http://ginnerskov.dk/filliste.asp viser mit script fra 31/1 15:09.
> http://ginnerskov.dk/filliste2.asp viser dit script fra 31/1 16:47.
>
> Begge scripts fejler, hvis der i den scannede mappe er en undermappe.
Begge
> scripts har yderligere den fejl, at de viser tilstedeværende undermapper i
> den scannede mappe, hvilket kan være en sikkerhedsrisiko.

Nu er jeg lidt forvirret.
Er dit formål ikke at liste .pdf filer i alle (under) mapper?

> > men
> > du kan få lidt flere impulser fra:
> > <http://w-o-p-r.dk/storm.monitor/storm.monitor.asp.txt>
>
> Den kan jeg ikke lige overskue. Den inkluderer også en md5-rutine, jeg
ikke
> disponerer over.

MD5 er en gammelkendt rutine, og jeg har også lagt ASP-versionen ud med et
link:
http://w-o-p-r.dk/storm.monitor/storm.monitor.md5.asp.txt

De skriver noget om license osv., men det kræver ikke den store
ledvogtereksamen at 'aspfisere' gammelkendte algoritmer.

Brugen af MD5 gør, at kun de der kender det hemmelige password a la 'ken
sent me' får adgang til scriptet.


--
Med venlig hilsen/Best regards
Stig Johansen




Erik Ginnerskov (05-02-2010)
Kommentar
Fra : Erik Ginnerskov


Dato : 05-02-10 13:56

Stig Johansen wrote:

> Nu er jeg lidt forvirret.
> Er dit formål ikke at liste .pdf filer i alle (under) mapper?

Nej, kun i en (i scriptet) specifiseret mappe - uden at behøve forbyde
kunden at oprette undermapper i pågældende mappe.

>>> men
>>> du kan få lidt flere impulser fra:
>>> <http://w-o-p-r.dk/storm.monitor/storm.monitor.asp.txt>
>>
>> Den kan jeg ikke lige overskue. Den inkluderer også en md5-rutine,
>> jeg ikke disponerer over.
>
> MD5 er en gammelkendt rutine, og jeg har også lagt ASP-versionen ud
> med et link:
> http://w-o-p-r.dk/storm.monitor/storm.monitor.md5.asp.txt

Jeg kigger på det og ser, om jeg kan begribe det.

--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk



Stig Johansen (05-02-2010)
Kommentar
Fra : Stig Johansen


Dato : 05-02-10 18:33

Erik Ginnerskov wrote:

> Stig Johansen wrote:
>
>> Nu er jeg lidt forvirret.
>> Er dit formål ikke at liste .pdf filer i alle (under) mapper?
>
> Nej, kun i en (i scriptet) specifiseret mappe - uden at behøve forbyde
> kunden at oprette undermapper i pågældende mappe.

Så havde jeg misforstået.
Hvis du ikke skal have undermapper med, skal du ikke bruge det rekursive
kald, så denne del kan du pille ud:
.....
  Set fc = f.SubFolders
  For Each f1 in fc
    strNySti =  sti & "/" & f1.name
    GetSubFolderFile strNySti,level+1
  Next
.....
Den kalder netop undermapper (subfolders).

--
Med venlig hilsen
Stig Johansen

Erik Ginnerskov (07-02-2010)
Kommentar
Fra : Erik Ginnerskov


Dato : 07-02-10 13:22

Stig Johansen wrote:

> Så havde jeg misforstået.
> Hvis du ikke skal have undermapper med, skal du ikke bruge det
> rekursive kald, så denne del kan du pille ud:
> ....
> Set fc = f.SubFolders
> For Each f1 in fc
> strNySti = sti & "/" & f1.name
> GetSubFolderFile strNySti,level+1
> Next
> ....
> Den kalder netop undermapper (subfolders).

Det var lige det, der skulle til. Nu er scriptet ufølsomt for eventuelle
undermapper. Tak for hjælpen.

--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk



Søg
Reklame
Statistik
Spørgsmål : 177416
Tips : 31962
Nyheder : 719565
Indlæg : 6407859
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste