[asp]Filecheck, blijft oneindig loopen

Pagina: 1
Acties:

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:13
Hoi,
ben bezig met een simpel filecheck script:

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
'Hier gaan we checken of het file bestaat, daarna doorsturen NAAR het file!
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Do While not (fs.FileExists("d:/dbf/out/"&bestand2))=true
    If (fs.FileExists("d:/dbf/out/"&bestand2))=false Then   %>
. 
    <% else %>
        <% if (fs.FileExists("d:/dbf/out/"&bestand2))=true then %>
            <meta http-equiv="refresh" content="1;URL=../viewpdf.asp?filename=<%=bestand2%>&cat=<%=Cat%>">
            Finished PDF File creation... please wait!      
                <% End If 
     End If
     loop
set fs=nothing 
%>


Welnu, het klopt bijna, ware het niet dat ie oneindig blijft loopen en dat de test server netjes onderuit gaat.

Wat vergeet ik hier nu?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Blijkbaar klopt er iets niet aan je conditie
while not (conditie) = true... Misschien moet je maar je haakjes eens herzien?
while not (conditie = true) bv.

Tip: leer misschien eens debuggen of die debugger te gebruiken.

https://fgheysels.github.io/


  • syllaz
  • Registratie: Mei 2002
  • Laatst online: 20-04 17:01
Volgens mij moet je Do While vervangen door normaal een <if> statement.
Als FileExists is true dan blijft ie loopen, terwijl je maar 1 keer de waarde van FileExists wil weten...

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Do While not = true (dus als false is) blijf dan lopen.
dus OF het bestand bestaat niet of hij zoekt naar het verkeerde bestand / bestandsvar is leeg.

maar idd waarom wil je dat in een do loop zetten?

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • whitey-d
  • Registratie: April 2000
  • Laatst online: 08-08 19:24
de Do While conditie is ook dubbel, hij begint met de conclusie dat het bestand niet bestaat, en dan wordt in het volgende If-statement ook nagekeken of het bestand niet bestaat.

“Advertising says to people, 'Here's what we've got. Here's what it will do for you. Here's how to get it.'”


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:13
whoami: die debugger? Welke debugger, en idd, ik zou eens moeten leren om te debuggen!

Heart..pumps blood.Has nothing to do with emotion! Bored


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:13
syllaz schreef op 13 september 2002 @ 13:57:
Volgens mij moet je Do While vervangen door normaal een <if> statement.
Als FileExists is true dan blijft ie loopen, terwijl je maar 1 keer de waarde van FileExists wil weten...
Hij moet pas wat gaan doen als het bestand bestaat. Ik dacht dat dat in een loop moest vandaar.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
TeeDee schreef op 13 september 2002 @ 14:03:
[...]


Hij moet pas wat gaan doen als het bestand bestaat. Ik dacht dat dat in een loop moest vandaar.


Dan blijft hij gewoon in die loop tot wanneer dat dat bestand bestaat...

https://fgheysels.github.io/


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:13
Owke, maar dan het volgende: dat bestand is er dan al. Terwijl ie gewoon blijft loopen.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Kijk nog eens naar uw conditie....
Staat daar niet while not fileexist = true... Dus zolang het bestand niet bestaat.

Je moet echt dringend eens leren debuggen en zelf je code nakijken.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:55

gorgi_19

Kruimeltjes zijn weer op :9

TeeDee schreef op 13 september 2002 @ 14:21:
Owke, maar dan het volgende: dat bestand is er dan al. Terwijl ie gewoon blijft loopen.
Dat denk je maar.. })

code:
1
d:/dbf/out/"

En kijk eens in de handleiding van het FileSystemObject.....

Een hint, ik zal ff een willekeurige pakken.. :P

code:
1
objFSO.DeleteFile("C:\SomeDirectory\*.txt")


Misschien is het een idee om eens eens rustig tutorial door te nemen, want niet alleen de fout die whoami zegt, is er.. Bovenstaande is er nog eentje, je code is niet echt bepaald netjes
code:
1
2
    <% else %>
        <% if (fs.FileExists("d:/dbf/out/"&bestand2))=true then %>

Kan beter:
code:
1
    <% elseif (fs.FileExists("d:/dbf/out/"&bestand2))=true then %>


Verder doe je nu alle moeite om een clientside redirect op te bouwen.. Waarom gebruik je dan niet Response.Redirect?

En debuggen in asp kan je perfect door door middel van Response.Write.. (kent nog geen goede tracing mogelijkheden.. :'(

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:13
Thanks voor alle hulp, ik zag inderdaad niet dat het e.e.a dubbelop ging :(

Dit heb ik nu en het werkt:

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%
bestand2 = request("filename")
response.write filename&"<br>"
Catalogus = request("cat")
response.write Catalogus&"<br>"

'Hier gaan we checken of het file bestaat, daarna doorsturen NAAR het file!
Set fs=Server.CreateObject("Scripting.FileSystemObject")
File = true
While (fs.FileExists("d:/dbf/out/"&bestand2) = false)
file = not file
Wend
if (file) then 
response.redirect "../viewpdf.asp?filename="&bestand2&"&cat="&Cat
End If 
set fs=nothing 
%>

Zoals je ziet, is het flink veranderd 8)7

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Maar waarom doe je een while-loop? Je wilt kijken of de file bestaat of niet, dan doe je toch gewoon
code:
1
2
3
4
5
if fs.FileExists(...) Then
    ' bestaat
Else
    ' bestaat niet
End If

ipv een loopje in en een boolean erbij halen om te kijken of je moet redirecten of niet.

Overigens moet je ook even opletten dat als je redirect, code die daarna komt niet wordt uitgevoerd, dus als je het netjes doet moet je dan voordat je de redirect doet fs op nothing zetten (en eventueel ander grut opruimen).

Exact expert nodig?


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:13
Nou, hij moet net zo lang blijven checken totdat dat file bestaat.
Dat file komt er vanzelf wel een keer, varierend van 5 tot 25 sec. Daarna moet ie redirecten.

En als ik het goed begrijp checkt ie maar 1 keer of het bestaat als je een If gebruikt. Toch?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Klopt, een if is voor 1 check. Maar hmm ik weet niet of je server zo blij wordt van een loopje "tot de file bestaat"...

Exact expert nodig?


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:13
Crazy_D: wordt ie ook nie :)

Maar hij doet er nu zowiezo langer over. Zonder check: 7 sec. maken van pdf. Met check: 49 seconden. Maar dat ligt ook meer aan de server hoor :)

Verder: een server is ervoor om "misbruikt" te worden. Vind ik :+

Heart..pumps blood.Has nothing to do with emotion! Bored

Pagina: 1