Page 1 sur 1

Transformer 1 fichier txt en html

Publié : sam. 10/avr./2004 19:09
par Guimauve
J'en assé de coder moi-même directement en html. J'ai fait un petit programme pour transformer un fichier txt en fichier html. Ça marche bien sauf que j'ai des problèmes avec la mise en forme. Je voudrais remplacer les espaces qui se trouvent en début de ligne par " " . Si quelqu'un connaît l'astuce sur comment on fait pour remplacer seulement les espaces qui se trouve en début de chaîne ça serait sympa.
Pour le moment je fais comme ça et c'est pas très fort. :(
Je suis sûr que c'est possible de faire mieux.

Merci à l'avance.

A+
Guimauve

Code : Tout sélectionner

If Left(htmlcode$, 3) = Chr(32) + Chr(32) + Chr(32)
     htmlcode$ = "   " + RTrim(htmlcode$)
EndIf
               
If Left(htmlcode$, 2) = Chr(32) + Chr(32)
     htmlcode$ = "  " + RTrim(htmlcode$)
EndIf
               
If Left(htmlcode$, 1) = Chr(32)
     htmlcode$ = " " + RTrim(htmlcode$)
EndIf
La version la moins bogué de la procedure en question :

Code : Tout sélectionner

Dim Texte$(5000)

fichiertxt$ = "test.txt"

Procedure.s LoadTxtSaveHtml(fichiertxt$)
     
     If OpenFile(0, fichiertxt$) = 0
          ; Le fichier txt n'a pas pu être ouvert, message d'erreur.
          MessageRequester("Programmenom$", "Errortxt01$", #MB_ICONWARNING)
          
     Else
          
          Repeat
               
               ligne_de_txt$ = ReadString()
               Texte$(n) = ligne_de_txt$ + "<br>"
               n = n + 1
               
          Until Eof(0)
          
          CloseFile(0)
     EndIf
     
     If FileSize("test.html") > - 1
          DeleteFile("test.html")
     EndIf
     
     If OpenFile(1,"test.html") = 0
          ; Le fichier html n'a pas pu être ouvert, message d'erreur.
          MessageRequester("Programmenom$", "Errortxt01$", #MB_ICONWARNING)
          
     Else
          WriteStringN("<html>")
          WriteStringN("<head>")
          WriteStringN("<title>" + "test" + "</title>")
          WriteStringN("<meta http-equiv=" + "Content-Type" + "content=" + "text/html; charset=iso-8859-1" + ">")
          WriteStringN("</head>")
          color = GetSysColor_(#COLOR_3DFACE)
          red = Red(color)
          green = Green(color)
          blue = Blue(color)
          WriteStringN("<body bgcolor=" + Chr(34) + Hex(red) + Hex(green) + Hex(blue) + Chr(34) + " leftmargin=" + Chr(34) + "3" + Chr(34) + " topmargin=" + Chr(34) + "3" + Chr(34) + " marginwidth=" + Chr(34) + "3" + Chr(34) + " marginheight=" + Chr(34) + "3" + Chr(34) + ">")
          WriteStringN("<table width=" + Chr(34) + "-230" + Chr(34) + " border=" + Chr(34) + "0" + Chr(34) + " cellpadding=" + Chr(34) + "0" + Chr(34) + " cellspacing=" + Chr(34) + "0" + Chr(34) + ">")
          WriteStringN("<!--DWLayoutTable-->")
          WriteStringN("<tr>")
          WriteStringN("<td width=" + Chr(34) + "-230" + Chr(34) + " height=" + Chr(34) + "100" + Chr(34) + " valign=" + Chr(34) + "top" + Chr(34) + "><div align=" + Chr(34) + "justify" + Chr(34) + "><font size=" + Chr(34) + "1" + Chr(34) + " face=" + Chr(34) + "Verdana, Arial, Helvetica, sans-serif" + Chr(34) + ">")
          
          Repeat
               htmlcode$ = Texte$(m)
               If Right(htmlcode$, 9) = "</strong>"
                    htmlcode$ = htmlcode$ + "<br>"
               EndIf
               
               If Left(htmlcode$, 3) = Chr(32) + Chr(32) + Chr(32)
                    htmlcode$ = "&nbsp;&nbsp;&nbsp;" + RTrim(htmlcode$)
               EndIf
               
               If Left(htmlcode$, 2) = Chr(32) + Chr(32)
                    htmlcode$ = "&nbsp;&nbsp;" + RTrim(htmlcode$)
               EndIf
               
               If Left(htmlcode$, 1) = Chr(32)
                    htmlcode$ = "&nbsp;" + RTrim(htmlcode$)
               EndIf
               
               WriteStringN(htmlcode$)
               m = m + 1
          Until m = n
          
          WriteStringN("</font></div></td>")
          WriteStringN("</tr>")
          WriteStringN("</table>")
          WriteStringN("</body>")
          WriteStringN("</html>")
          CloseFile(1)
     EndIf
     
EndProcedure

Publié : sam. 10/avr./2004 22:11
par Invité
ben ton problem est simple , c'est ta methode qui n'est pas clair !!

moi si j'avais a faire un truc du genre c'est au moment de la lecture du *.txt
que je ferai la conversion

lorque tu fais
fichiertxt$ = "test.txt"

Procedure.s LoadTxtSaveHtml(fichiertxt$)

If OpenFile(0, fichiertxt$) = 0
; Le fichier txt n'a pas pu être ouvert, message d'erreur.
MessageRequester("Programmenom$", "Errortxt01$", #MB_ICONWARNING)

Else

Repeat

ligne_de_txt$ = ReadString()

;***** ici ***** j'analyserai la ligne
;genre :

for a=0 to len( ligne_de_txt$) :; pour chaque caractere de la ligne
if Mid( ligne_de_txt$, a, 1) =chr(32):; on regarde si un espace (ou autre)
ici ecrit le caractere html correspondant dans l'autre fichier
avec un un write
endif

mais moi perso je lirai le fichier octet par octet
puis suivant si l'octet est entre 33 et 255 c'est un caractere
donc on le reecrit tel quel
si plus petit que 33 c'est un code html a inserer a la place
32 un espace 13 (ou 11 je sais pus) un retour chario ect ....



; tu peut ouvrir plusieur fichier en lecture et ecriture


;*********************************

Texte$(n) = ligne_de_txt$ + "<br>"
n = n + 1

Until Eof(0)

CloseFile(0)
EndIf

Publié : sam. 10/avr./2004 22:29
par Le Soldat Inconnu

Code : Tout sélectionner

Longueur1 = Len(phrase$)
phrase$ = LTrim(phrase$)
longueur2 = Len(phrase$)

For n = Longueur2 To longueur1 - 1
  phrase$ = "&nbsp;" + phrase$
Next
code extrait de mon logiciel aide qui transforme des fichiers textes en page html.
si tu veux le code complet, hésite pas à le demander :wink:

Publié : dim. 11/avr./2004 1:45
par erix14

Code : Tout sélectionner

Structure MonChar 
  Char.b 
EndStructure 

#Txt = 0
#Html = 1
#Memoire = 0
#Vrai = 1
#Faux = 0

Procedure.s LoadTxtSaveHtml(fichiertxt$) 
          If OpenFile(#Txt, fichiertxt$) = 0 
                    MessageRequester("Erreur", "Le fichier n'a pu être ouvert", #MB_ICONWARNING) 
                    Goto FinLTSH
          Else
                    LongueurTxt.l = FileSize(fichiertxt$)
                    MemoryID = AllocateMemory(#Memoire, LongueurTxt, 0) 
                    ReadData(MemoryID, LongueurTxt) 
                    CloseFile(#Txt) 
          EndIf
          fichiertxt$ = Mid(fichiertxt$, 1, Len(fichiertxt$)-3) + "htm"
          If CreateFile(#Html,fichiertxt$) = 0 
                    MessageRequester("Erreur", "Probème avec le fichier de sortie HTML", #MB_ICONWARNING) 
                    Goto FinLTSH
          Else 
                    WriteStringN("<html>") 
                    WriteStringN("<head>") 
                    WriteStringN("<title>" + "test" + "</title>") 
                    WriteStringN("<meta http-equiv=" + "Content-Type" + "content=" + "text/html; charset=iso-8859-1" + ">") 
                    WriteStringN("</head>") 
                    color = GetSysColor_(#COLOR_3DFACE) 
                    red = Red(color) 
                    green = Green(color) 
                    blue = Blue(color) 
                    WriteStringN("<body bgcolor=" + Chr(34) + Hex(red) + Hex(green) + Hex(blue) + Chr(34) + " leftmargin=" + Chr(34) + "10" + Chr(34) + " topmargin=" + Chr(34) + "10" + Chr(34) + " marginwidth=" + Chr(34) + "10" + Chr(34) + " marginheight=" + Chr(34) + "10" + Chr(34) + ">") 
                    WriteStringN("<table width=" + Chr(34) + "100%" + Chr(34) + " border=" + Chr(34) + "0" + Chr(34) + " cellpadding=" + Chr(34) + "0" + Chr(34) + " cellspacing=" + Chr(34) + "0" + Chr(34) + ">") 
                    WriteStringN("<!--DWLayoutTable-->") 
                    WriteStringN("<tr>") 
                    WriteStringN("<td width=" + Chr(34) + "100%" + Chr(34) + " height=" + Chr(34) + "100" + Chr(34) + " valign=" + Chr(34) + "top" + Chr(34) + "><div align=" + Chr(34) + "justify" + Chr(34) + "><font size=" + Chr(34) + "4" + Chr(34) + " face=" + Chr(34) + "Verdana, Arial, Helvetica, sans-serif" + Chr(34) + " color=#206020" + ">") 
                    *PointeurTxt.MonChar = MemoryID
                    Espace_HTML$ = ""
                    Ligne_de_txt$ = ""
                    Debut.b = #Vrai
                    For t.l = 1 To LongueurTxt
                              If Debut = #Vrai
                                        If *PointeurTxt\Char = 32     ; ESPACE
                                                  Espace_HTML$ + "&nbsp;"
                                        EndIf
                                        If *PointeurTxt\Char = 9     ; TABULATION
                                                  For r.l = 1 To 10
                                                            Espace_HTML$ + "&nbsp;"
                                                  Next
                                        EndIf
                                        If *PointeurTxt\Char = 13     ; A LA LIGNE
                                                  WriteStringN("<div>&nbsp;</div>")
                                        EndIf
                                        If *PointeurTxt\Char > 32     ; TEXTE
                                                  Debut = #Faux
                                        EndIf
                              EndIf
                              If Debut = #Faux
                                        If *PointeurTxt\Char = 13     ; A LA LIGNE
                                                  WriteStringN("<div>" + Espace_HTML$ + Trim(Ligne_de_txt$) + "</div>")
                                                  Espace_HTML$ = ""
                                                  Ligne_de_txt$ = ""
                                                  Debut.b = #Vrai
                                        EndIf
                                        If *PointeurTxt\Char >= 32    ; ON RECUPERE LE TEXTE
                                                  Ligne_de_txt$ + Chr(*PointeurTxt\Char)
                                                  If t = LongueurTxt     ; FIN DU FICHIER TEXTE
                                                            WriteStringN("<div>" + Espace_HTML$ + Trim(Ligne_de_txt$) + "</div>")
                                                  EndIf
                                        EndIf
                              EndIf
                              *PointeurTxt + 1
                    Next 
                    WriteStringN("</td>") 
                    WriteStringN("</tr>") 
                    WriteStringN("</table>") 
                    WriteStringN("</body>") 
                    WriteStringN("</html>") 
                    CloseFile(#Html) 
          EndIf
FinLTSH:
EndProcedure
      
          LoadTxtSaveHtml(OpenFileRequester("Fichier texte a convertir en HTML","" , "Fichiers Textes|*.txt", 0) )
End
J ai un peu travaille sur ton code... Il va certainement me servir bientot...
:mad:

Publié : dim. 11/avr./2004 2:12
par Guimauve
En fait il y a 2 raisons pour laquelle je travaille là dessus.

1re J'ai envie de me faire un éditeur html qui va automatiser
la creation d'un site web complet en transformant des fichiers textes
en fichier html.

2e Oui le programme d'aide du Soldat Inconnu est très bien
sauf que je me demande si c'est vraiment nécessaire d'avoir un aide
aussi élaborer quand l'aide ne contient que 4 ou 5 petites rubriques
au maximum.

Moi j'aimerais bien avoir une version allégé, sans fonction de
recherche, ni bouton de navigation et un interface très minimale.
C'est pour ça que j'aimerais faire mon petit programme d'aide.

Merci Soldat pour ton bout de code, je vais voir si je peux l'adapter
pour mon programme.

A+
Guimauve

Publié : dim. 11/avr./2004 2:26
par Guimauve
Erix14

Euh chapeau je viens de tester et ça marche bien.

Je pense que je vais devoir étudier la notion des pointeurs,
des structures et de l'utilisation de la mémoire.

Merci à toi.

Correction il y a un petit bogue, les caratères spéciaux disparaissent pendant la conversion. Moi je ne comprends pas vraiment la manipulation de la mémoire et donc je ne sais où l'information se perd. On pourrait peut-être profiter de l'occasion pour remplacer ces caratères par leurs équivalent en html. Voiçi la liste :

Code : Tout sélectionner

< 		<
> 		>
& 		&
" 		"
&nbsp; 		
&reg; 		®
&copy; 		©
<sup>TM</sup>	TM
&pound; 		£
&cent; 		¢
&Agrave; 	À
&Aacute; 	Á
&Acirc; 		Â
&Atilde; 		Ã
&Auml; 		Ä
&Aring; 		Å
&AElig; 		Æ
&Ccedil; 		Ç
&Egrave; 	È
&Eacute; 	É
&Ecirc; 		Ê
&Euml; 		Ë
&Igrave; 		Ì
&Iacute; 		Í
&Icirc; 		Î
&Iuml; 		Ï
&ETH; 		Ð
&Ntilde; 		Ñ
&Ograve; 	Ò
&Oacute; 	Ó
&Ocirc; 		Ô
&Otilde; 		Õ
&Ouml; 		Ö
&Oslash; 	Ø
&Uacute; 	Ú
&Ugrave; 	Ù
&Ucirc; 		Û
&Uuml; 		Ü
&Yacute; 	Ý
&THORN; 	Þ
&szlig; 		ß
&aacute; 	á
&agrave; 	à
&acirc; 		â
&atilde; 		ã
&auml; 		ä
&aring; 		å
&aelig; 		æ
&ccedil; 		ç
&egrave; 	è
&eacute; 	é
&ecirc; 		ê
&euml; 		ë
&igrave; 		ì
&iacute; 		í
&iuml; 		ï
&eth; 		ð
&ntilde; 		ñ
&oacute; 	ó
&ograve; 	ò
&otilde; 		õ
&ocirc; 		ô
&ouml; 		ö
&oslash; 		ø
&ugrave; 	ù
&uacute; 	ú
&ucirc; 		û
&uuml; 		ü
&yacute; 		ý
&thorn; 		þ
&yuml; 		ÿ
&para; 		¶
&frac14; 		¼
&frac12; 		½
&frac34; 		¾
&iquest; 		¿
&iexcl; 		¡
&sup1; 		¹
&sup2; 		²
&sup3; 		³
&plusmn; 	±
&deg; 		°
&micro; 		µ
&middot; 	·
&laquo; 		«
&raquo; 		»
&ordf; 		ª
&sect; 		§
&brvbar; 		¦
&yen; 		¥
&curren; 		¤
&macr; 		¯
&cedil; 		¸
&acute; 		´
&not; 		¬
A+
Guimauve

Publié : dim. 11/avr./2004 10:14
par erix14
Mon pointeur de byte est de type signé (-128 à 127)
donc les ASCII > 127 ne sont pas traité
Voici la correction :

Code : Tout sélectionner

Structure MonChar 
  Char.b 
EndStructure 

#Txt = 0
#Html = 1
#Memoire = 0
#Vrai = 1
#Faux = 0

Procedure.s LoadTxtSaveHtml(fichiertxt$) 
          If OpenFile(#Txt, fichiertxt$) = 0 
                    MessageRequester("Erreur", "Le fichier n'a pu être ouvert", #MB_ICONWARNING) 
                    Goto FinLTSH
          Else
                    LongueurTxt.l = FileSize(fichiertxt$)
                    MemoryID = AllocateMemory(#Memoire, LongueurTxt, 0) 
                    ReadData(MemoryID, LongueurTxt) 
                    CloseFile(#Txt) 
          EndIf
          fichiertxt$ = Mid(fichiertxt$, 1, Len(fichiertxt$)-3) + "htm"
          If CreateFile(#Html,fichiertxt$) = 0 
                    MessageRequester("Erreur", "Probème avec le fichier de sortie HTML", #MB_ICONWARNING) 
                    Goto FinLTSH
          Else 
                    WriteStringN("<html>") 
                    WriteStringN("<head>") 
                    WriteStringN("<title>" + "test" + "</title>") 
                    WriteStringN("<meta http-equiv=" + "Content-Type" + "content=" + "text/html; charset=iso-8859-1" + ">") 
                    WriteStringN("</head>") 
                    color = GetSysColor_(#COLOR_3DFACE) 
                    red = Red(color) 
                    green = Green(color) 
                    blue = Blue(color) 
                    WriteStringN("<body bgcolor=" + Chr(34) + Hex(red) + Hex(green) + Hex(blue) + Chr(34) + " leftmargin=" + Chr(34) + "10" + Chr(34) + " topmargin=" + Chr(34) + "10" + Chr(34) + " marginwidth=" + Chr(34) + "10" + Chr(34) + " marginheight=" + Chr(34) + "10" + Chr(34) + ">") 
                    WriteStringN("<table width=" + Chr(34) + "100%" + Chr(34) + " border=" + Chr(34) + "0" + Chr(34) + " cellpadding=" + Chr(34) + "0" + Chr(34) + " cellspacing=" + Chr(34) + "0" + Chr(34) + ">") 
                    WriteStringN("<!--DWLayoutTable-->") 
                    WriteStringN("<tr>") 
                    WriteStringN("<td width=" + Chr(34) + "100%" + Chr(34) + " height=" + Chr(34) + "100" + Chr(34) + " valign=" + Chr(34) + "top" + Chr(34) + "><div align=" + Chr(34) + "justify" + Chr(34) + "><font size=" + Chr(34) + "4" + Chr(34) + " face=" + Chr(34) + "Verdana, Arial, Helvetica" + Chr(34) + " color=#206020" + ">") 
                    *PointeurTxt.MonChar = MemoryID
                    Espace_HTML$ = ""
                    Ligne_de_txt$ = ""
                    Debut.b = #Vrai
                    For t.l = 1 To LongueurTxt
                              If *PointeurTxt\Char > 0
                                        c.l = *PointeurTxt\Char
                              Else
                                        c.l = 128 | (*PointeurTxt\Char & 127)
                              EndIf
                              If Debut = #Vrai
                                        If c = 32     ; ESPACE
                                                  Espace_HTML$ + "&nbsp;"
                                        EndIf
                                        If c = 9     ; TABULATION
                                                  For r.l = 1 To 10
                                                            Espace_HTML$ + "&nbsp;"
                                                  Next
                                        EndIf
                                        If c = 13     ; A LA LIGNE
                                                  WriteStringN("<div>&nbsp;</div>")
                                        EndIf
                                        If c > 32     ; TEXTE
                                                  Debut = #Faux
                                        EndIf
                              EndIf
                              If Debut = #Faux
                                        If c = 13     ; A LA LIGNE
                                                  WriteStringN("<div>" + Espace_HTML$ + Trim(Ligne_de_txt$) + "</div>")
                                                  Espace_HTML$ = ""
                                                  Ligne_de_txt$ = ""
                                                  Debut.b = #Vrai
                                        EndIf
                                        If c >= 32    ; ON RECUPERE LE TEXTE
                                                  Ligne_de_txt$ + Chr(c)
                                                  If t = LongueurTxt     ; FIN DU FICHIER TEXTE
                                                            WriteStringN("<div>" + Espace_HTML$ + Trim(Ligne_de_txt$) + "</div>")
                                                  EndIf
                                        EndIf
                              EndIf
                              *PointeurTxt + 1
                    Next 
                    WriteStringN("</td>") 
                    WriteStringN("</tr>") 
                    WriteStringN("</table>") 
                    WriteStringN("</body>") 
                    WriteStringN("</html>") 
                    CloseFile(#Html) 
          EndIf
FinLTSH:
EndProcedure
      
          LoadTxtSaveHtml(OpenFileRequester("Fichier texte a convertir en HTML","" , "Fichiers Textes|*.txt", 0) )
End

Publié : dim. 11/avr./2004 10:32
par Le Soldat Inconnu
tu sais qu'avec internet explorer, tu n'as pas besoin de traduire les caractères spéciaux, ça marche très bien avec :roll:

Publié : dim. 11/avr./2004 12:01
par Guimauve
Oui je sais sauf que si je fais un site web et que je l'upload chez FreeWebs.com par exemple, ces caratères ne seront pas tenu en compte et seront remplacé par d'autre. Je sais plus par quel.

J'ai eu ce problème lorsque j'ai mis mon CV en ligne à la mi-janvier chez FreeWebs. J'ai dû faire la correction manuellement en ligne.

Merci à tout le monde.

A+
Guimauve

Publié : mar. 13/avr./2004 9:39
par Invité
cela provient surement de la facon dont tu upload tes fichiers
en generale lorque tu veux pas que ton prestataire modifie tes fichiers
ils faut les envoyer en mode ASCII (parametrage de ton prg de FTP)
et pas en mode BINAIRE !! :)