Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/09/2006, 11h12   #1
Membre actif
 
Inscription : avril 2004
Messages : 202
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2004
Messages : 202
Points : 192
Points : 192
Par défaut openTextFile et plusieurs writeLine

Bonjour,

je dois créer dynamiquement un fichier texte contenant du code HTML à partir d'une routine.
mon code fait un grand nombre de caractères (plus de 10.000). je suis donc obligé de le découper en plusieurs lignes afin de pouvoir utiliser la methode write du FileSystemObject de VB.
Voici mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
set oStream_emailing = oFSO_emailing.openTextFile(server.MapPath(HTML_NL_URL), 2, true)
'ATTENTION ! la longueur de la ligne de texte est limitée !
if len(mail_text) > cst_maxlength_textFile_line then
	'calcul du nombre de ligne à générer
	nbLine = cLng(len(mail_text) / cst_maxlength_textFile_line)
	if (len(mail_text) - (nbLine * cst_maxlength_textFile_line)) <> 0 then
		nbLine = nbLine + 1
	end if
	response.Write len(mail_text) & " car. soit " & nbLine & " ligne(s)"
	for lineCount = 1 to nbLine
		LineText = mid(mail_text, cLng((lineCount-1) * cst_maxlength_textFile_line + 1), cLng(cst_maxlength_textFile_line))
		oStream_emailing.writeLine LineText
	next
else
	oStream_emailing.write mail_text
end if
oStream_emailing.close
set oStream_emailing = nothing
la 1ère ligne s'écrit bien dans le fichier, mais pas les suivantes !
Code :
1
2
3
 
Erreur d'exécution Microsoft VBScript error '800a0005'
Argument ou appel de procédure incorrect
c'est au niveau du writeline que ça coince ...
aurais-je raté une étape ?
merci de vos lumières éclairées !
__________________
Nico, l'agrotic géomatic
agrotic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2006, 11h56   #2
Membre régulier
 
Inscription : juillet 2005
Messages : 161
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 161
Points : 92
Points : 92
perso je ferais plutot :

Code :
1
2
3
LineText = mid(mail_text, cLng((lineCount-1) * cst_maxlength_textFile_line + 1), cLng(cst_maxlength_textFile_line))
oStream_emailing.write LineText
oStream_emailing.writeline
Mateache est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2006, 13h09   #3
Membre actif
 
Inscription : avril 2004
Messages : 202
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2004
Messages : 202
Points : 192
Points : 192
j'obtiens la même chose ... avec cette méthode
__________________
Nico, l'agrotic géomatic
agrotic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 09h29   #4
Membre actif
 
Inscription : avril 2004
Messages : 202
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2004
Messages : 202
Points : 192
Points : 192
pas d'autres avis sur la question ?
__________________
Nico, l'agrotic géomatic
agrotic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 09h51   #5
Membre régulier
 
Inscription : juillet 2005
Messages : 161
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 161
Points : 92
Points : 92
Si tu veu générer un mail en HTML le mieux serait peut etre de concatener ta chaine puis de faire un seul write a la fin
Mateache est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 10h08   #6
Membre actif
 
Inscription : avril 2004
Messages : 202
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2004
Messages : 202
Points : 192
Points : 192
c'est ce que je faisais jusqu'à ce que je rallonge la lettre...
j'ai commencé à avoir ce pb à partir de 10.000 caractères.
je suis surpris de cette limitation.
__________________
Nico, l'agrotic géomatic
agrotic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2006, 11h38   #7
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Salut,

Citation:
Envoyé par Mateache
Si tu veu générer un mail en HTML le mieux serait peut etre de concatener ta chaine puis de faire un seul write a la fin
Il ne faut surtout pas faire cela quand il y a bcp de texte. En utilisant cette methode on fait en general ceci:
Code :
1
2
 
montexte = montexte & " la ligne en plus etc etc"
Et ainsi de suite. Cette methode à l'inconvénient de provoquer une copie d'une variable en memoire dans une autre variable (ici la mm). Cela ralenti énormement le processus quand la variable est "grosse".
Il vaut mieux passer par un fichier texte dans lequel on ecrit en bout de ligne.
J'ai utilisé cette methode, mais je ne me souvient plus trop comment. Il me semble pas que j'avais de limitation de longueur de ligne. Ceci dit, tu pourrait avantageuseument remplacer "writeln" par write. Si tu veux introduire un retour à la ligne insère un "vbcrlf".

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 09h32   #8
Membre actif
 
Inscription : avril 2004
Messages : 202
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2004
Messages : 202
Points : 192
Points : 192
OK Immobilis, je vais essayer autrement ...
et je vous donnerai ma solution
__________________
Nico, l'agrotic géomatic
agrotic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 11h37   #9
Membre actif
 
Inscription : avril 2004
Messages : 202
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2004
Messages : 202
Points : 192
Points : 192
j'ai trouvé ce qui posait problème !!!

non, ce n'était pas un nombre max de caractères, non ce n'était pas un problème de droits, non ce n'était rien de tout ça ...

en fait, c'est le caractère "?" associé au code ascii 63 qui posait problème !
du coup, je suis obligé de tester tous les caractères avant de les écrire car un simple replace(mail_text, chr(63), "?") ne suffit pas !

du coup, j'ai une horrible rustine qui marche :
Code :
1
2
3
4
5
6
7
		for nCar = 1 to len(mail_text)
			if asc(mid(mail_text, nCar, 1)) = 63 then
				oStream_emailing.write "?"
			else
				oStream_emailing.write mid(mail_text, nCar, 1)
			end if
		next
si quelqu'un peut m'expliquer ça ... je suis preneur !
__________________
Nico, l'agrotic géomatic
agrotic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h07.


 
 
 
 
Partenaires

Hébergement Web