Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2516 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Transcrire une page HTML dans Delphi

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transcrire une page HTML dans Delphi

n°2070839
miss'cotto
Posté le 19-04-2011 à 11:35:41  profilanswer
 

Bonjour
 
Je doit réaliser un programme sous Delphi afin qu'à partir d'une page HTML je puisse la retranscrire dans l'interface de Delphi. J'ai quelques idées de bases mais je bute sur de nombreux autres problèmes. Pour commencer, j'aimerais bien arriver à transcrire tout ce qui à un rapport avec le texte et le fond de la page, puis plus tard pour les tableaux et les images.
 
Pour commencer, j'ai récupéré le code pour créer une fiche où l'utilisateur peut rentrer son texte et Delphi le réécrit dans un mémo. Mais maintenant tout le travail commence ! Pour cela je pensais incorporer une bibliothèque de balises où le programme puiserait quand il rencontrerait une balise. Néanmoins, je ne sais pas comment faire pour incorporer ou créer cette bibliothèque ni comment écrire qu'à chaque fois qu'on rencontre une balise, on l'identifie et on la traite.
Ensuite, quels entités utilisés ? Pour l'instant je ne connais que les bases de Delphi et je ne vois pas comment avec des mémos ou des labels je vais pouvoir "écrire" une page HTML.
 
Bon en gros, je suis perdue...  :(  
Est ce que quelqu'un aurait quelques pistes à me donner ?
 
Merci
 

mood
Publicité
Posté le 19-04-2011 à 11:35:41  profilanswer
 

n°2070906
rengzehn
Posté le 19-04-2011 à 15:33:46  profilanswer
 

C'est un sacré travail que tu dois faire là. C'est dans quel contexte ? études ou travail pro ? tu dois faire ça pour n'importe quelle page html ?
réécrire un parser de balises en delphi, langage mal adapté au traitement des chaines et meme au xml, c'est vraiment hard-core, voire masochiste.

 

avec des memo et labels tu pourras simuler des <form> html. mais bon...

 

bon courage si ce n'est qu'un exercice :)


Message édité par rengzehn le 19-04-2011 à 15:34:34
n°2070913
rufo
Pas me confondre avec Lycos!
Posté le 19-04-2011 à 16:13:27  profilanswer
 

Effectivement, je serais curieux de savoir quel est le vrai besoin, le besoin initial. Parce que là, tu exprimes une solution technique qui me semble assez loufoque  :ouch:  
 
C'est clair que c'est un boulot de malade car il ne s'agit pas juste de réécrire un parser de html, y'a aussi le parser du css qui fait le gros de la mise en forme. Faut que tu sois capable de gérer le css1, 2 et 3 (quand on sait que y'a des navigateurs "modernes" qui ne gèrent pas correctement le css3 (voire parfois le 2.1 :/ ).


Message édité par rufo le 19-04-2011 à 16:13:41

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2070927
rengzehn
Posté le 19-04-2011 à 17:02:52  profilanswer
 

ça sent le pierre tramouille cette histoire :o kradeg ? sors de ce pseudo ?


Message édité par rengzehn le 19-04-2011 à 17:03:23
n°2070962
miss'cotto
Posté le 19-04-2011 à 19:35:12  profilanswer
 

Alors en fait c'est un projet d'école d'ingénieur. Je ne doit être capable que de retranscrire des pages HTML sans déborder sur du CSS ou du Java. Il faudrait juste que le programme retranscrive quelques balises de base : le texte (gros, gras, italique, couleurs,...), le fond, l’entête. Puis plus tard, les tableaux et les images. Il ne s'agit pas de faire un navigateur complet, juste d'entamer la réflexion.  
Cela n’empêche que je ne sais pas comment entamer le programme.

n°2071045
rufo
Pas me confondre avec Lycos!
Posté le 20-04-2011 à 09:58:09  profilanswer
 

Ben un parser html ET css (et c'est pas du java mais du Javascript, ça n'a rien à voir!!!). Si tu prends un site web coder proprement, tu vas trouver dans le html que des balises (aucune mise en forme) et dans le css, toute la mise en page (images de fond, marges, taille des polices, gras, italique...). Si tu dois reproduire la mise en page de base, tu vas donc être obligé d'analyser le ou les css, en tenant compte des héritages et priorités de règles.
 
ex :

Code :
  1. p {
  2.  font-weight: bold !important;
  3. }
  4.  
  5. p.test {
  6.  font-weight: normal;
  7. }


Ben à cause du !important, la règle de p.test sera ignorée...
 
Et pour rappel, les balises de mise en forme <b>, <i>, center>, <font>, <strike>, <u>... sont dépréciées et on doit utiliser les propriétés css qui les remplacent. Donc si ton prof a dasn l'idée de vous faire parser des sites web avec ce genre de balises, tu lui jettes des pierre de ma part, car ces sites ne respectent ni les normes du W3C, ni l'accessibilité (A, AA, AAA) pour les personnes handicapées visuellement :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2071156
miss'cotto
Posté le 20-04-2011 à 18:06:06  profilanswer
 

Après discussion avec mon prof, on doit commencer juste par traduire quelques balises de début, pas une page entière de web.  
Le problème que j'ai pour commencer c'est que je ne sais pas comment faire pour que le programme comprenne que c'est une balise et non pas un signe inférieur ou supérieur (< ou > ).

n°2071164
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 20-04-2011 à 19:48:16  profilanswer
 

Salut
 
si tu lit ton code html d'un fichier texte, ça ne gène pas, par ex.tu lis une ligne et tu fait un test avec pos:
 
 

var tmp:string;
 
if pos('<title>', tmp) > 0 then...


 
dans l'éditeur tu vois que tes <> sont en bleu et pas noir  ;)

n°2071165
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 20-04-2011 à 19:49:12  profilanswer
 

Salut
 
si tu lit ton code html d'un fichier texte, ça ne gène pas, par ex.tu lis une ligne et tu fait un test avec pos:
 
 

var tmp:string;
 
if pos('<title>', tmp) > 0 then...


 
dans l'éditeur tu vois que tes <> sont en bleu et pas noir  ;)

n°2071167
miss'cotto
Posté le 20-04-2011 à 20:10:43  profilanswer
 

J'ai pas réussi à utiliser la commande pos. Pourrais-tu me donner un peu plus de détails ?
 
Pour l'instant dans mon programme, je récupère mon texte html dans un memo. Maintenant, j'aimerais commencer par lui demander de lire ce qui est marqué dans ce memo et qu'il le reconnaisse.  
 
 

Code :
  1. begin
  2. compteur:= 0;
  3. for i:=1 to Memo1.Lines.Count do
  4.       begin
  5.         ligne:=Memo1.Lines[i];
  6.         if ligne ='<head>' then
  7.         compteur := compteur +1
  8.       end;
  9. end;


Le compteur me sert juste à savoir si a bien reconnu le caractère. Sauf que quand je fait du pas à pas, ligne prend bien la valeur <head> mais ne rentre pas dans la boucle. Vous voyez le problème ?

mood
Publicité
Posté le 20-04-2011 à 20:10:43  profilanswer
 

n°2071169
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 20-04-2011 à 20:18:08  profilanswer
 

if ligne= '<head>' c'est pas bon parceque tu ne peut rien avoir d'autre sinon la condition est fausse  
 
pour pos justement ça indique que si on trouve '<head>' dans ligne au moins au premier caractère de la chaine c'est bon
 
 

begin
compteur:= 0;
for i:=1 to Memo1.Lines.Count do
       begin
         ligne:=Memo1.Lines[i];
         if pos('<head>',ligne) > 0  then
         compteur := compteur +1
       end;
end;


 
 
tu peut mettre autre chose que 0 of courses, si tu met 5 il faudra que <head> soit au 5eme caractère


Message édité par Flagad'aware le 20-04-2011 à 20:19:28
n°2071170
miss'cotto
Posté le 20-04-2011 à 20:19:16  profilanswer
 

Ok autant pour moi.... Il fallait commencer i à 0... Pas futée la fille...

n°2071171
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 20-04-2011 à 20:20:04  profilanswer
 

memo.lines.count -1 aussi
 
 
par contre attéssion avec pos il te donne la première occurence  de la sous chaine recherchée, si tu cherchais un deuxième <head> dans la meme chaine il faudrait déja supprimer le permier...


Message édité par Flagad'aware le 20-04-2011 à 20:23:55
n°2071172
miss'cotto
Posté le 20-04-2011 à 20:24:02  profilanswer
 

Ok nikel pour pos, j'ai compris comment ça marche. Mais maintenant comment je retranscrit ce qu'il y a dans la balise head dans l'inteface delphi ? Memo ? Label ? Je ne sais pas quel entité choisir...

n°2071173
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 20-04-2011 à 20:29:17  profilanswer
 

tu peut faire ça avec un richedit, ça permet de mettre pas mal de guirlandes et c'est plus complet qu'un memo
 
les labels faudrait les créer dynamiquement à chaque fois au bon endroit

n°2071174
miss'cotto
Posté le 20-04-2011 à 20:34:21  profilanswer
 

Pour prendre une chaîne de caractère entre la balise de début et de fin <head> .... </head>, est ce que l'on peut raisonner par position de la balise par rapport au texte entier ?

n°2071176
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 20-04-2011 à 20:40:14  profilanswer
 

roulolo je connais pas le html mais vu tout ce qu'il y a entre tu peut pas, déja t'a ça sur 15000 lignes et en plus t'a tout un tât d'infos à trier quand meme (parser on dit je crois)
 
si c'est juste sur une chaine tu peut facilement oui pour un lienweb par exemple

n°2071223
rufo
Pas me confondre avec Lycos!
Posté le 21-04-2011 à 10:28:56  profilanswer
 

Si tu connais pas le html, t'es vraiment très mal parti :/
 
Perso, je ne pense pas que passer par la fonction pos() soit une bonne idée. J'utiliserais plutôt les regex, mais attention avec le pb des conteneurs, style <div>...<div>...</div>...</div>, ne pas se tromper dans les balises fermantes, qui ferme quoi et autant que possible traiter les cas où une balise fermante a été oubliée + le coup des balises non conteneur comme <img />, <hr />...  
 
Après, côté structure, il te faut un arbre (comme ce que fait le DOM). Moi, je serais toi, je chercherais un parser XML pas trop strict pour parser le HTML et avoir déjà la structure en arbre. Ca peut être soit un composant Delphi, soit un exe codé dans un autre langage que tu appellerais en ligne de commande et qui d'une manière ou d'une autre te renverrait l'arbre à ton exe en Delphi...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2071304
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 21-04-2011 à 12:33:50  profilanswer
 

rufo a écrit :

Si tu connais pas le html, t'es vraiment très mal parti :/


 
m'en fou c'est pas moi qui doit trouver  [:gijar]  :D  
 
c'est vrai que dans le cas  <div>...<div>...</div>...</div> avec pos c'est chaud  [:cyber103]

n°2071346
rufo
Pas me confondre avec Lycos!
Posté le 21-04-2011 à 14:25:07  profilanswer
 

Flagad'aware a écrit :


 
m'en fou c'est pas moi qui doit trouver  [:gijar]  :D  
 
c'est vrai que dans le cas  <div>...<div>...</div>...</div> avec pos c'est chaud  [:cyber103]


 
c'est pas toi qui doit trouver quoi  :heink: Si tu ne connais pas le html (le langage, hein!), comment veux-tu être capable d'écrire un parser et de faire un rendu potable :??:  


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2071469
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 21-04-2011 à 21:03:22  profilanswer
 

bah c'est pas moi qui pose la question, je propose juste des possibilités pour aider Miss'cotto  :)

n°2071535
rufo
Pas me confondre avec Lycos!
Posté le 22-04-2011 à 09:41:30  profilanswer
 

Flagad'aware a écrit :

bah c'est pas moi qui pose la question, je propose juste des possibilités pour aider Miss'cotto  :)


 
Oops, je t'avais confondu avec l'auteur du topic, désolé  :pt1cable:  


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2071645
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 22-04-2011 à 13:19:10  profilanswer
 

s'pô grave  :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Transcrire une page HTML dans Delphi

 

Sujets relatifs
Bouton CSS HTML[Résolu] Problème syntaxe IE sur lien vers une page avec lecteur mp3
Perte de la mise en page d'un site[J2EE] Restreinte d'une partie ou de la page entière abc.jsp
background non visible dans email HTMLCSS: mise en page en vrac depuis firefox4
Bon livre HTML 5 CSS3 voir JqueryImageFlow : Remonter slide dans la page
Centrer video Flash dans page html 
Plus de sujets relatifs à : Transcrire une page HTML dans Delphi


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR