Avatar billede mr.gessle Nybegynder
29. august 2002 - 10:35 Der er 13 kommentarer og
2 løsninger

At skrive til en txt-fil

Jeg kører Win XP Pro og kan ikke få adgang til at skrive til en ganske almindelig tekstfil.
Tilgengæld har jeg opsnappet rygter om, at problemet skyldes de rettigheder man skal huske at sætte på mappen, hvilket har jeg gjort for "Alle" som har fuld adgang. Det hjælper ikke alligevel.
Følgende kode udløser:

<%@language=JavaScript%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- #include file="dbConnectionCustomer.js" -->
<%

//klargør og check dagens tekstfil.
var dagsDato = new Date();

dagsDato = dagsDato.toLocaleString();
dagsDatoFilStreng = "Postordrer";

//check om fil eksisterer
filObjekt           = Server.CreateObject("Scripting.FileSystemObject");

StiTilPostOrdrerFiler    = "";
streamOut          = filObjekt.OpenTextFile(dagsDatoFilStreng, 2, true);

streamOut.writeLine("Hejsa");


%>

Fejltype:
Der opstod en Microsoft JScript-kørselsfejl (0x800A0046)
Tilladelse nægtet
/site/content/writeOrder.asp, line 16
Avatar billede bredum Nybegynder
29. august 2002 - 10:38 #1
Avatar billede mr.gessle Nybegynder
29. august 2002 - 10:48 #2
Jamen jeg skal altså bruge javascript... Ikke VB-script...
Avatar billede ras2000 Nybegynder
29. august 2002 - 10:48 #3
Nu har jeg måske misforstået din kode, men jeg synes ikke du angiver en sti til den fil du vil skrive i. Skulle dagsdatofilstreng ikke være Postordrer/textfil.txt?
Avatar billede ras2000 Nybegynder
29. august 2002 - 10:49 #4
Hov, og denskal jo være "hård" altså server.mappath("postorder/tekstfil.txt")
Avatar billede medions Nybegynder
29. august 2002 - 11:01 #5
Jeg mener det hedder Server.ActiveX("Scripting.FileSystemObject") ... men er ikke helt sikker!

//>Rune
Avatar billede ras2000 Nybegynder
29. august 2002 - 11:03 #6
Næh, det behøves ikke. Server.CreateObject virker fint.
Avatar billede medions Nybegynder
29. august 2002 - 11:07 #7
Sorry det hedder ActiveXObject!

ExcelSheet = new ActiveXObject("Scripting.FileSystemObject");

;o)

//>Rune
Avatar billede medions Nybegynder
29. august 2002 - 11:08 #8
ras2000> Sq ik' hvis det er JScript! -Server.CreateObject er VBScript!

//>Rune
Avatar billede medions Nybegynder
29. august 2002 - 11:09 #9
Her er fx. et eksempel fra dokumentationen:

function ShowDriveList()
{
  var fso, s, n, e, x;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  e = new Enumerator(fso.Drives);
  s = "";
  for (; !e.atEnd(); e.moveNext())
  {
    x = e.item();
    s = s + x.DriveLetter;
    s += " - ";
    if (x.DriveType == 3)
      n = x.ShareName;
    else if (x.IsReady)
      n = x.VolumeName;
    else
      n = "[Drive not ready]";
    s +=  n + "<br>";
  }
  return(s);
}


//>Rune
Avatar billede ras2000 Nybegynder
29. august 2002 - 11:14 #10
Rune, det er Server.CreateObject i begge sprog. Man kan også lave det via ActiveX, i begge sprog, men det er så vidt jeg ved en ældre metode.
Avatar billede medions Nybegynder
30. august 2002 - 07:35 #11
Hmm...
Avatar billede ras2000 Nybegynder
30. august 2002 - 09:52 #12
Hvad siger hr gessle? Er der noget du kan bruge?
Avatar billede mr.gessle Nybegynder
30. august 2002 - 16:23 #13
Endnu gang fik jeg krejlet problemet på en anden måde... ASP stinker... Hvorfor fanden virker noget kode under visse Windows-udgaver, mens det ikke virker under andre. Selv de eksempler jeg har brugt fra bøger virker ikke under Win XP netop til at læse filer...
Slutresultatet kom til at se således ud:

<%@language=JavaScript%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<link href="../css/red.css" rel="stylesheet" type="text/css">
<%

//klargør dagens tekstfil.
var dagsDato = new Date();

dagsDato = dagsDato.toLocaleString();
dagsDato = dagsDato.substring(0, 15);
dagsDatoFilStreng = "Postordrer_"+dagsDato+".txt";

var processor = Session("valgtCPU");
var hd          = Session("valgtHD");
var mm          = Session("valgtMM");
var grafik      = Session("valgtGrafik");
var lyd          = Session("valgtLydkort");
var keyboard  = Session("valgtKeyboard");
var ram        = Session("valgtRam");
var monitor  = Session("valgtMonitor");
var dvd          = Session("valgtDVD");
var brænder  = Session("valgtBrænder");
var komm      = Session("valgtNet");
var sw        = Session("valgtSoft");
var totalpris = Session("newPrice");

//instantier filobjekt
filObjekt           = Server.CreateObject("Scripting.FileSystemObject")

//sti til postordrertekstfiler
var filSti          = "C:\\Rolskov\\Rolskov2\\Ny hp\\site\\content\\postordrer\\";


//eksisterer fil allerede? Åbn eksisterende fil og tilføj linier
if(filObjekt.FileExists(filSti + dagsDatoFilStreng))
{

  streamOut = filObjekt.OpenTextFile(filSti+dagsDatoFilStreng, 8, false);
  skrivOrdreData();
  udskrivBemaerkning();
}



else //lav ny fil og skriv
{
streamOut          = filObjekt.OpenTextFile(filSti+dagsDatoFilStreng, 2, true)
skrivOrdreData();
udskrivBemaerkning();
}
Avatar billede mr.gessle Nybegynder
30. august 2002 - 16:25 #14
Fedt dough... Og jeg gav pointene forkert... Nu holder jeg weekend *G*
Avatar billede medions Nybegynder
30. august 2002 - 16:28 #15
Hmm... *G*
Thx 4 Poinz

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