Avatar billede Beach Mester
14. februar 2002 - 00:30 Der er 23 kommentarer og
1 løsning

fso.DeleteFile

Har følgende kode med forklaring undervejs:
Function checkfile()
Dim fso, f, filespec
Dim pw1, pw2
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.MapPath(Request.Querystring("tlf") & ".txt")
Set f = fso.OpenTextFile(filespec,1)
For intLine = 1 to 8
  f.SkipLine
Next
pw1 = f.ReadLine
pw2 = f.ReadLine
'Checker om PW er indtastet ens
If pw1 <> pw2 Then
'Sender bruger retur til forige side hvis de ikke er ens
Response.Write("<script language=""JavaScript"">" & vbCrLf & "")
Response.Write("    {" & vbCrLf & "")
Response.Write("        document.location='java script:history.back(1);';" & vbCrLf & "")
Response.Write("    }" & vbCrLf & "")
Response.Write("    </script>" & vbCrLf & "")
End If
f.Close
'Her ville jeg meget gerne slette filen, men det vil den bare ikke:-(
fso.DeleteFile Server.MapPath((Request.Querystring("tlf") & ".txt")
Set fso=Nothing
End Function


Hvordan kommer jeg helskindet ud af den så jeg både sletter filen OG sender brugeren retur?

//Beach
Avatar billede Beach Mester
14. februar 2002 - 00:33 #1
Skal måske lige ligge en bemærkning om at alle funktioner virker som de skal bortset fra det at slette filen. Jeg har prøvet at ligge koden før scriptet der sender retur men desvære uden held!

//Beach
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 00:48 #2
hmmm - kunne det ikke have noget at gøre med at der er 2 (( efter Server.MapPath:

fso.DeleteFile Server.MapPath((Request.Querystring("tlf") & ".txt")

Prøv at fjerne den ene. ;o)

Venligst
Kristian Bjørn
KB3-MultiMedieDesign
Avatar billede Beach Mester
14. februar 2002 - 00:57 #3
Arb lige på sagen, men du er inde på noget af det rigtige.
Som det står nu så sletter den alle filer uanset om PW er rigtig eller forkert!

//Beach
Avatar billede Beach Mester
14. februar 2002 - 01:00 #4
Hvis jeg gør som her:

Function checkfile()
Dim fso, f, filespec
Dim pw1, pw2
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.MapPath(Request.Querystring("tlf") & ".txt")
Set f = fso.OpenTextFile(filespec,1)
For intLine = 1 to 8
  f.SkipLine
Next
pw1 = f.ReadLine
pw2 = f.ReadLine
'Checker om PW er indtastet ens
If pw1 <> pw2 Then
'Her ville jeg meget gerne slette filen, men det vil den bare ikke:-(
fso.DeleteFile Server.MapPath(Request.Querystring("tlf") & ".txt")
Set fso=Nothing
'Sender bruger retur til forige side hvis de ikke er ens
Response.Write("<script language=""JavaScript"">" & vbCrLf & "")
Response.Write("    {" & vbCrLf & "")
Response.Write("        document.location='java script:history.back(1);';" & vbCrLf & "")
Response.Write("    }" & vbCrLf & "")
Response.Write("    </script>" & vbCrLf & "")
End If
f.Close
End Function

så får jeg en Permission denied!
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 01:04 #5
Det er klart... SELVOM du laver en "gå 1 side tilbage" hvis PW1 er forskellig fra PW2, så ligger SLETTE koden UDEN for din IF sætning - så når siden løbes igennem vil den NÅ slette Objektet alligevel.

Du skulle hellere ligge slette funktionen ind i IF sætningen i en

If Then
"gå en tilbage"
Else
"Slet fil"
End If

Sådan her:
Function checkfile()
Dim fso, f, filespec
Dim pw1, pw2
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.MapPath(Request.Querystring("tlf") & ".txt")
Set f = fso.OpenTextFile(filespec,1)
For intLine = 1 to 8
  f.SkipLine
Next
pw1 = f.ReadLine
pw2 = f.ReadLine
'Checker om PW er indtastet ens
If pw1 <> pw2 Then
'Sender bruger retur til forige side hvis de ikke er ens
Response.Write("<script language=""JavaScript"">" & vbCrLf & "")
Response.Write("    {" & vbCrLf & "")
Response.Write("        document.location='java script:history.back(1);';" & vbCrLf & "")
Response.Write("    }" & vbCrLf & "")
Response.Write("    </script>" & vbCrLf & "")

Else

'Her ville jeg meget gerne slette filen, men det vil den bare ikke:-(
fso.DeleteFile Server.MapPath((Request.Querystring("tlf") & ".txt")
Set fso=Nothing

End If

f.Close
End Function

Håber det løser problemmet.

Venligst
Kristian Bjørn
Avatar billede Beach Mester
14. februar 2002 - 01:25 #6
Sorry den lange ventetid, men har ikke fået nogen mail om at du har været inde og skrive:-)
På ovenstående kan jeg umidelbart se at den sletter filen hvis PW er rigtigt indtastet og sender bruger retur hvis PW er forkert indtastet. Men det hjælper mig jo egentlig ikke da filen jo ikke skal slettes hvis PW er OK men kun hvis de ikke er ens. Jeg har goddt nok ikke testet dit forslag men har jeg ikke ret eller er det bare mig der er et fjols *S*

//Beach
Avatar billede Beach Mester
14. februar 2002 - 01:27 #7
Kan man i stedet for en Else ligge en And (rap rap) ind?

//Beach
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 01:34 #8
OKAY... Jeg var nok bare ikke helt med.
Du skal bare glemme ELSE(slet de fire bogstaver)
ikke noget med AND(det hører hjemme i IF'en hvis der skulle være flere end EEN betingelse der SKAL være opfyldt IF betinglse1 AND betingelse2 Then...

Det burde virke.

Venligst
Kristian Bjørn
Avatar billede Beach Mester
14. februar 2002 - 01:42 #9
Vil det sige at jeg bare skulle kunne ligge sletningen ind efter at brugeren er blevet sendt retur, eller er du gået sur i den?

//Beach
Avatar billede Beach Mester
14. februar 2002 - 01:45 #10
Har lige prøvet den her:
Function checkfile()
Dim fso, f, filespec
Dim pw1, pw2
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.MapPath(Request.Querystring("tlf") & ".txt")
Set f = fso.OpenTextFile(filespec,1)
For intLine = 1 to 8
  f.SkipLine
Next
pw1 = f.ReadLine
pw2 = f.ReadLine
'Checker om PW er indtastet ens
If pw1 <> pw2 Then

'Sender bruger retur til forige side hvis de ikke er ens
Response.Write("<script language=""JavaScript"">" & vbCrLf & "")
Response.Write("    {" & vbCrLf & "")
Response.Write("        document.location='java script:history.back(1);';" & vbCrLf & "")
Response.Write("    }" & vbCrLf & "")
Response.Write("    </script>" & vbCrLf & "")
'Her ville jeg meget gerne slette filen, men det vil den bare ikke:-(
fso.DeleteFile Server.MapPath(Request.Querystring("tlf") & ".txt")
Set fso=Nothing
End If
f.Close
End Function

Men den sletter ikke filen. Der kommer godt nok ikke nogle fejl, og man kommer også retur til forige side, men den vil stadig ikke slette filen:-(

Er det mig der har misforstået noget eller..........:-)

//Beach
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 01:56 #11
Nej det er mig der har søvn i øregangen tror jeg.
Jeg har vist ladet mig forvirre af din måde at "gå en side tilbage" på men javascript.

Jeg ville nok vælge at gøre det med en Response.Redirect "java script:history.go(-1)"
Det er ikke nødvendigt at definere at du vil til at bruge noget javascript.

OG Du har jo ret i at filen skal slettes FØR man redirecter.
Prøv den her:

Function checkfile()
Dim fso, f, filespec
Dim pw1, pw2
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.MapPath(Request.Querystring("tlf") & ".txt")
Set f = fso.OpenTextFile(filespec,1)
For intLine = 1 to 8
  f.SkipLine
Next
pw1 = f.ReadLine
pw2 = f.ReadLine
'Checker om PW er indtastet ens
If pw1 <> pw2 Then
'Her ville jeg meget gerne slette filen, men det vil den bare ikke:-(
fso.DeleteFile Server.MapPath(Request.Querystring("tlf") & ".txt")
Set fso=Nothing

'Sender bruger retur til forige side hvis de ikke er ens
Response.Redirect "java script:history.go(-1)"

End If
f.Close
End Function

Venligst
Kristian Bjørn
Avatar billede Beach Mester
14. februar 2002 - 02:11 #12
Grunden til at jeg bruger javascripe er at data som brugeren allerede har indtastet ikke må slettes så de skal i starte helt forfra.
Det kan man ikke bare lave med en history.go(-1)
Jeg har nu prøvet dit forslag og der får jeg self. ok hvis PW er ok, og den sletter ikke filen men...... Der kommer en Permission denied hvis PW ikke er ens.

Function checkfile()
Dim fso, f, filespec
Dim pw1, pw2
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.MapPath(Request.Querystring("tlf") & ".txt")
Set f = fso.OpenTextFile(filespec,1)
For intLine = 1 to 8
  f.SkipLine
Next
pw1 = f.ReadLine
pw2 = f.ReadLine
'Checker om PW er indtastet ens
If pw1 <> pw2 Then
'Her ville jeg meget gerne slette filen, men det vil den bare ikke:-(
fso.DeleteFile Server.MapPath(Request.Querystring("tlf") & ".txt")
Set fso=Nothing

'Sender bruger retur til forige side hvis de ikke er ens
Response.Redirect "java script:history.go(-1)"

End If
f.Close
End Function

Måske det ville hjælpe hvis du kunne se hvad det er jeg har gang i:-)
Se her: http://kabler.freestyle.dk > klik opret!
Fidusen er så at man indtaster sine data og er PW ikke rigtigt begge steder kan (skal) man jo så prøve igen.
Måske du også kan få lidt ud af at smutte forbi her:
http://exp.dk/spm/171881 hvor jeg har fået hjælpen til at lave en lille omvej til java script:history.go(-1)

//Beach
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 02:27 #13
Når man har udfyldt formularen er det meningen at der skal oprettes en textfil der hedder "telefonnummer.txt" - bliver den oprettet?
Uden for din Funktion?

Nu ved jeg jo ikke helt hvad linie 63 siger, men det er der fejlen ligger.
Hvis textfilen IKKE er blevet oprettet kan opreationen jo ikke udføres.

Venligst
KRistian Bjørn
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 02:31 #14
Kunne du ikke lægge hele siden opretverify.asp herud eller i hvertfald de første 70 linier?

Venligst
Kristian Bjørn
Avatar billede Beach Mester
14. februar 2002 - 02:33 #15
Filen bliver oprettet både hvis PW er rigtig og forkert.
Jeg bliver på det spørgsmål nok lige nød til at poste hele koden fra siden så du kan se det i en sammenhæng:-)
<html>
<head>
<title>Beach Net</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="css/tekstdeko.css" type="text/css">
</head>
<body bgcolor="#3399CC" text="#000000" topmargin="23" leftmargin="0" marginwidth="0" marginheight="0" >

<%
Function makefile()

  Dim fso, f
  Set fso = CreateObject("Scripting.FileSystemObject")
  set f = fso.OpenTextFile("d:\home\freestyledk\www\kabler\" & Request.Querystring("tlf") & ".txt", 8, True)
  '**************************
  ' VIGTIGT Jeg har IKKE rettet OpenTextFile til CreateTextFile i DIN linie...
  '**************************
  'set f = fso.CreateTextFile("C:\Inetpub\wwwroot\KB3\Freestyler\" & Request.Querystring("tlf") & ".txt", True)
  f.WriteLine "Oprettelsestidspunkt:"
  f.WriteLine now
  f.WriteLine Request.Querystring("fornavn")
  f.WriteLine Request.Querystring("efternavn")
  f.WriteLine Request.Querystring("adresse")
  f.WriteLine Request.Querystring("postnummer")
  f.WriteLine Request.Querystring("by")
  f.WriteLine Request.Querystring("tlf")
  f.WriteLine Request.Querystring("password")
  f.WriteLine Request.Querystring("repeatpassword")
  f.WriteLine Request.Querystring("levfirma")
  f.WriteLine Request.Querystring("levkontaktperson")
  f.WriteLine Request.Querystring("levadresse")
  f.WriteLine Request.Querystring("levpostnummer")
  f.WriteLine Request.Querystring("levby")
  f.WriteLine Request.Querystring("levtlf")
  f.Close
End Function

Function readfile()
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.MapPath(Request.Querystring("tlf") & ".txt")
Set f = fso.OpenTextFile(filespec,1)
Do While not f.AtEndOfStream
  Response.write f.ReadLine & "<br>"
Loop
f.Close
End Function

Function checkfile()
Dim fso, f, filespec
Dim pw1, pw2
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.MapPath(Request.Querystring("tlf") & ".txt")
Set f = fso.OpenTextFile(filespec,1)
For intLine = 1 to 8
  f.SkipLine
Next
pw1 = f.ReadLine
pw2 = f.ReadLine
'Checker om PW er indtastet ens
If pw1 <> pw2 Then
'Her ville jeg meget gerne slette filen, men det vil den bare ikke:-(
fso.DeleteFile Server.MapPath(Request.Querystring("tlf") & ".txt")
Set fso=Nothing

'Sender bruger retur til forige side hvis de ikke er ens
Response.Redirect "java script:history.go(-1)"

End If
f.Close
End Function

%>

<%
makefile
readfile
checkfile
%>


</body>
</html>

//Beach
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 02:34 #16
HÆ HÆ - det har jeg jo hjulpet dig med
HEj Allan!
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 02:37 #17
Jeg tror sku - på trods af søvn i håret - at jeg har gennemskuet fejlen.
Du forsøger at slette en fil der STADIG er åben. Det kan man som bekendt ikke.

Derfor skal du have stoppet en EXTRA f.Close ind FØR du sletter textfilen INDEN i din IF sætning.

Sådan:

Function checkfile()
Dim fso, f, filespec
Dim pw1, pw2
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.MapPath(Request.Querystring("tlf") & ".txt")
Set f = fso.OpenTextFile(filespec,1)
For intLine = 1 to 8
  f.SkipLine
Next
pw1 = f.ReadLine
pw2 = f.ReadLine
'Checker om PW er indtastet ens
If pw1 <> pw2 Then
'Text-filen lukkes inden den slettes!!!
f.Close
'Her ville jeg meget gerne slette filen, men det vil den bare ikke:-(
fso.DeleteFile Server.MapPath(Request.Querystring("tlf") & ".txt")
Set fso=Nothing

'Sender bruger retur til forige side hvis de ikke er ens
Response.Redirect "java script:history.go(-1)"

End If
f.Close
End Function

Venligst
Kristian Bjørn
Avatar billede Beach Mester
14. februar 2002 - 02:39 #18
Ups, der er et par gamle kommentare i som du nok lige skal se lidt bort fra.
Jeg har lagt alle filerne her i en Zip hvis det kan hjælpe endnu mere.
http://www.freestyle.dk/eksperten/kabler.zip

//Beach
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 02:39 #19
OG for en god ordens skyld bør du også lukke Objektet hvis valideringen er GOD.

De sidste 3 linier rettes til:

End If
f.Close
Set fso=Nothing
End Function

Venligst
Kristian Bjørn
Avatar billede Beach Mester
14. februar 2002 - 02:41 #20
Nå det er dig Kris. Jeg var ikke helt sikker:-)
Kigger lige på det *LOL*

//Beach

PS: Havde jo på fornemmeren at du i den sidste ende kom til at bygge hele skittet *S*
Jeg gir en øl hvis du kommer til Roskilde en dag:-)

//Beach
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 02:50 #21
JA! Nu virker det så...
Jeg pakker lige filerne i en zip igen og sender på din mail - den har jeg vist endnu ;o)

Venligst
Kristian Bjørn

Og Det lyder forøvrigt godt med den Øl.
Jeg tager dig på ordet - regner med at jeg skal spille med
mit band på Gimlen en gang her i løbet af 2002.
Avatar billede Beach Mester
14. februar 2002 - 02:53 #22
Så skal vi da bare lave en lille deal. Glæder mig til at møde dig. Har du en ide om hvornår? Hvad spiller du(i)?

//Beach
Avatar billede krisbjoern Nybegynder
14. februar 2002 - 02:58 #23
Vi spiller gedign rock(en energisk Trio)
Det bliver jo nok først på den anden side af sommerferien.
Vi har ikke nogen aftale med Gimlen endnu.

Er der andre steder i Roskilde der tager RockRock ind?

Vi har da også en lille hjemmeside
(jeg er ved at redisigne den - så der kommer en ny version op snart)
www.grandband.dk

Venligst
Kristian Bjørn

PS. Har i øvrigt sendt dig en zip med mail...
Avatar billede Beach Mester
15. februar 2002 - 00:31 #24
Ang. Gimle mm. den får du lige på e-mail:-)

//Beach
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