14. februar 2002 - 00:30Der 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?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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!
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
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
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*
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...
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..........:-)
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)"
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)
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.
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)"
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)"
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
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.