Toon posts:

[ASP]Tekst bestand wegschrijven naar file

Pagina: 1
Acties:
  • 149 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Vraagje,
Ik heb hier een tekstbestand dat de body vormt van een e-mail die met behulp van CDONTS naar de klant toegezonden kan worden. Deze e-mail ziet er ongeveer zo uit:

Geachte heer/ mevrouw,

Binnenekort zullen de volgende bedragen van uw rekening worden afgeschreven

met vriendelijke groeten, BLAAA

nu lukt het uitlezen van het tekstbestand wel gewoon goed.
(zie topic http://gathering.tweakers.net/forum/list_messages/328068/1?limit=25)
maar als ik het bestand door middel van een knop opslaan wil wegschrijven krijg ik de volgende foutmeding:

Unterminated string constant.
De functie die ik gebruik om het bestand weg te schrijven ziet er zo uit:

Sub SchrijfMail

sInhoud = "<%= Request.Form("textareaEmailTekst")%>"
Const ForWriting = 2
Dim fso2, f2
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set f2 = fso2.OpenTextFile("mail.txt", ForWriting, True)
f2.Write ("<%=sInhoud%>")
Set f2 = fso2.OpenTextFile("mail.txt", ForReading)
SchrijfMail = f2.ReadLine
End Sub

Ik wil dus de string sInhoud die uit een textarea wordt gehaald wegschrijven in een text bestand...
Iemand die me kan vertellen wat er fout gaat? BVD.

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 15-09 11:04

Basszje

Reisvaap!]

Op dinsdag 27 november 2001 14:14 schreef Tux_NL het volgende:
Sub SchrijfMail

sInhoud = "<%= Request.Form("textareaEmailTekst")%>"
Const ForWriting = 2
Dim fso2, f2
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set f2 = fso2.OpenTextFile("mail.txt", ForWriting, True)
f2.Write ("<%=sInhoud%>")
Set f2 = fso2.OpenTextFile("mail.txt", ForReading)
SchrijfMail = f2.ReadLine
End Sub
Klopt niet . Je schrijft <%= %> in je ASP source .
Daar moet je een var van maken of eerst van het form requesten .

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Topicstarter
Kun je dat wat nader uitleggen? Hij vraagt namelijk bij die foutmelding of ik em wil debuggen en dan zeg ik ja...en dat heeft ie die text wel gewoon uit die textarea gehaald....

Dit geeft ie nu bij het debuggen:
Sub SchrijfMail

sInhoud = "Geachte heer/mevrouw @naam@

Onderstaand vindt u de specificatie van de door u afgenomen internetdiensten. De specificatie gaat over de aangegeven periode en zal een dezer dagen automatisch van uw rekening worden afgeschreven.

@content01@
@content02@

Met vriendelijke groeten,

BLAAAA
@toelichting@"
Const ForWriting = 2
Dim fso2, f2
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set f2 = fso2.OpenTextFile("mail.txt", ForWriting, True)
f2.Write ("")
End Sub

dus die string inlezen gaat goed dan toch?

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
Op dinsdag 27 november 2001 14:14 schreef Tux_NL het volgende:
code:
1
2
3
4
5
6
7
8
9
sInhoud = "<%= Request.Form("textareaEmailTekst")%>"
Const ForWriting = 2
Dim fso2, f2
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set f2 = fso2.OpenTextFile("mail.txt", ForWriting, True)
f2.Write ("<%=sInhoud%>")
Set f2 = fso2.OpenTextFile("mail.txt", ForReading)
SchrijfMail =   f2.ReadLine
End Sub
Hmmm, je leest en schrijft uit hetzelfde bestand??? :?

Daarnaast definieer je een const ForWriting en niet ForReading... Geen id of het uitmaakt, maar misschien handig om die ook even te definieren...

Verwijderd

Topicstarter
dat heb ik al uitgezet dat lezen....

dus dat gaat nu wel goed...
edit:

dit er dus uitgehaald:
Set f2 = fso2.OpenTextFile("mail.txt", ForReading)
SchrijfMail = f2.ReadLine

Verwijderd

Topicstarter
"<%= sInhoud%>"

heb ik inmiddels vervangen door Inhoud maar nog steeds dezelfde fout :?

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 21:53

Greyfox

MSX rulez

Bij het schrijven van dit soort bestanden, loop ik nog wel eens tegen een ' in de naam van de persoon aan. Dan krijg je een unterminated string constant omdat hij die ' ziet als het einde van de tekst.

MSX 2 rulez more


Verwijderd

Topicstarter
hmmm.....hij hangt inderdaad om een of andere reden op dat tekstbestand...
als ik dit in een tekstbestand zet:
ashdgjsaghjdhgasjhgdjasghd

schrijft ie het wel goed weg...

iemand die me kan vertellen waardoor ie hangt en hoe et op te lossen valt?? Thnx...

  • Dope-E
  • Registratie: Januari 2001
  • Laatst online: 08-09 13:23

Dope-E

The one and only Dope

Op dinsdag 27 november 2001 14:35 schreef Greyfox het volgende:
Bij het schrijven van dit soort bestanden, loop ik nog wel eens tegen een ' in de naam van de persoon aan. Dan krijg je een unterminated string constant omdat hij die ' ziet als het einde van de tekst.
Je moet een functie hebben die dan de ' checkt...
code:
1
2
3
4
5
6
7
8
9
10
11
12
function FixString(ByVal Zin)
    Dim x
    Dim Teken
   FixString = ""
    x = 1
    Do While x <= Len(Zin)
        Teken = Right(Left(Zin, x), 1)
        If Teken = "'" Then FixString = FixString & Teken
        FixString = FixString & Teken
        x = x + 1
    Loop
End Function

twitter.com/curly_sanders


  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
Hmmm, niet makkelijker om gewoon de replace(string, "teken", "vervanger") te gebruiken???

Verwijderd

Topicstarter
Yah dat lijkt mij ook....maar in mijn mail tekstbestand komen geen vreemde tekens voor....

Alle .en komma's @@ eruit gehaald ....maar nog geeft ie die fout....hij zal dus wel hangen op een ENTER ofzo in die file.....

  • Dope-E
  • Registratie: Januari 2001
  • Laatst online: 08-09 13:23

Dope-E

The one and only Dope

ach ja zou ook kunnen :P

twitter.com/curly_sanders


Verwijderd

Topicstarter
Yah hij hang inderdaad zodra er een enter in die file zit...

zou je zeggen haal alle enters eruit...maar daar wordt m'n mail niet zo netjes van....

  • Mart!
  • Registratie: Februari 2000
  • Laatst online: 15-09 10:30
Hak de tekst in stukken zonder Linebreaks en .writeLine ze dan naar het bestand. That should do the trick....
code:
1
2
3
4
5
6
dim a()
a = split(teSchrijvenText,vbCrLf)

for t = lbound(a) to ubound(a)
  f2.writeline a(t)
next

Of was het nou .writeLn? Nou ja, dat zoek je zelf maar uit :)

edit:
klein bugje in code

Verwijderd

Topicstarter
Thnx....zal morgen ff proberen...

Verwijderd

Topicstarter
Hmmm....heb em nu zo die functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub cmdSubmit_onClick()

    Dim Inhoud
    Dim fso2, tf2
    Set fso2 = CreateObject("Scripting.FileSystemObject")
    Set tf2 = fso2.CreateTextFile("c:\testfile.txt", True)
    'Splits de tekst van de inhoud na elke enter
    Inhoud = split ("<%= Request.Form("textareaEmailTekst")%>",vbCrLf)
    for t = lbound(Inhoud) to ubound(Inhoud)
      tf2.writeline Inhoud(t)
    next    
    
End Sub

maar geeft nog steeds die fout...
als de text in die textarea maar 1 regel is schrijft ie em gewoon weg....

Verwijderd

Topicstarter
als ik van die vbCrLf een spatie maak...dus " "

dan splits ie die ene regel wel gewoon goed na elke spatie...

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 15-09 11:04

Basszje

Reisvaap!]

Probeer het 's met Server.HTMLENCODE , die filtert er misschien meer uit en kijk eens wat je overhoudt.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Topicstarter
Dat werkt niet in VBScript volgens mij.....

Verwijderd

Op woensdag 28 november 2001 09:36 schreef Tux_NL het volgende:

Sub cmdSubmit_onClick()

Dim Inhoud
Dim fso2, tf2
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set tf2 = fso2.CreateTextFile("c:\testfile.txt", True)
'Splits de tekst van de inhoud na elke enter
Inhoud = split ("<%= Request.Form("textareaEmailTekst")%>",vbCrLf)
for t = lbound(Inhoud) to ubound(Inhoud)
tf2.writeline Inhoud(t)
next

End Sub
:? Inhoud = split(Request.Form("textareaEmailTekst"), vbCrLf)
Pagina: 1