Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Objet WebBrowser. | |
| | Auteur | Message |
---|
Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Objet WebBrowser. Mer 12 Aoû 2020 - 15:31 | |
| Bonjour. @Klaus. Je dois télécharger des milliers de pages web, grâce à l'objet WB et cela par l'intermédiaire d'un memo, comme le montre une partie de mon code ci-dessous. Le problème est le suivant: le temps est très long, 1.000 traductions de mots en 72 minutes environ !! Les pauses de 0,6 sec sont obligatoires, sinon un plantage se produit de façon aléatoire. N'y aurait-il pas moyen de récupérer la partie visible dans un fichier, temporaire ou autre, ce qui réduirait la durée de traitement de façon drastique ? Merci de la suite. - Code:
-
res%=dll_call2("WB_Url",wb%,adr(url$)):wait 600 res%=dll_call2("WB_CopyToMemo",wb%,handle(1)):wait 600
if trim$(item_read$(1,1))="" then wait 1000:res%=dll_call2("WB_CopyToMemo",wb%,handle(1)):wait 1000
a$=item_read$(1,1) if instr(lower$(a$),"nous ne pouvons")>0 message "Coupure Internet !" terminate end_if | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Objet WebBrowser. Mer 12 Aoû 2020 - 15:44 | |
| ???????????
La syntaxe des appels est bonne, c'est tout ce que je puis dire...
Si tu as un problème, poste en code complet, exécutable (sous forme d'un extrait de ton programme qui soit exploitable tel quel, avec les variables et tout le toutim), ainsi qu'une descriptiondu problème (sous forme textuelle, captures d'écran, URL, ...). | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Objet WebBrowser. Mer 12 Aoû 2020 - 15:47 | |
| Bonjour. Voici donc le source complet de mon programme: - Code:
-
dim a$, a_partir_de%, c$, crlf$, d$, debut$, e$, element$, f$, fic$, jusque%, lettre$, lien$, nom$, nombre%, p$, url$, i%, k%, res%, tab1$(19), tab2$(19), te$, wb%, zz%
' Fait: b,f,g,h,i,j,k,l,m,n,o,q,s,t,u,v,w,x,y,z. ' 1000 mots en 72 min. ' a: de 1 à 2000, sur 24.737. ' c: de 1 à 2000, sur 34.550. ' d: de 1 à 4000, sur 41.498. ' e: de 1 à 6000, sur 35.527. ' p: de 1 à 2000, sur 27.288. ' r: de 1 à 12000, sur 36.851. ' 14.764 mots traduits. lettre$="d" nombre%=41498 a_partir_de%=4001 jusque%=15000
crlf$=chr$(10)+chr$(13)
lien$="https://dictionary.cambridge.org/dictionary/french-english/"
dll_on "kgf"
maximize 0
memo 1 left 1,550:width 1,500:height 1,700 bar_both 1 font_size 1,12:font_bold 1:font_color 1,0,0,255
dlist 2:dlist 3
fic$="c:\cambridge\dico_cambridge.txt" if file_exists(fic$)=1 then file_load 3,fic$
wb%=dll_call1("WBCreate",handle(0)) res%=dll_call4("WBLocate",0,0,500,700)
c$="Ã:copyright: ê Ã:registered: è Å“ ç É ï â ä û ô ß ö ü Ãœ Ö ù à " d$="é ê î è oe ç é ï â ä û ô ß ö ü Ü Ö ù à "
debut$=time$
for k%=1 to 19 tab1$(k%)=mid$(c$,k%*3-2,2) tab2$(k%)=trim$(mid$(d$,k%*3-2,2)) next k%
d$="c:\larousse\larousse"+lettre$ dir_change d$
nom$=file_find_first$
k%=0 while nom$<>"_" k%=k%+1 nom$=file_find_next$ if k%>=a_partir_de% and k%<=jusque% and left$(nom$,1)<>"." if right$(nom$,4)=".htm" then nom$=left$(nom$,len(nom$)-4) caption 0,str$(k%)+"/"+str$(jusque%)+": "+nom$+", début à "+debut$+", il est "+time$+"."
url$=lien$+nom$ res%=dll_call2("WB_Url",wb%,adr(url$)):wait 600 res%=dll_call2("WB_CopyToMemo",wb%,handle(1)):wait 600
if trim$(item_read$(1,1))="" then wait 1000:res%=dll_call2("WB_CopyToMemo",wb%,handle(1)):wait 1000
a$=item_read$(1,1) if instr(lower$(a$),"nous ne pouvons")>0 message "Coupure Internet !" terminate end_if
for i%=1 to count(1) a$=item_read$(1,i%) if a$<>"" then corriger_ligne() item_add 2,a$ next i%
' Le mot comporte-t-il des traductions ? element$="Translation of ":chercher() if res%>0 for i%=res%-1 to 1 step -1:item_delete 2,i%:next i%
for i%=1 to count(2) a$=trim$(item_read$(2,i%)) if instr(a$,"GLOBAL French-English Dictionary")+instr(a$,"PASSWORD French-English Dictionary")>0 then exit_for ' Translation of xénophobie – French–English dictionary zz%=instr(a$,"Translation of "):if zz%>0 then a$=trim$(left$(a$,instr(a$,"–")-1)) if a$<>"" then item_add 3,a$ next i% item_add 3,"*" file_save 3,fic$ end_if
clear 1:clear 2 end_if end_while
i%=0 for k%=1 to count(3) a$=item_read$(3,k%) if instr(a$,"Translation of ")>0 then i%=i%+1 next k%
' 867 mots à l'heure. message "Début: "+debut$+", fin: "+time$+crlf$+crlf$+"Nombre de mots traduits: "+str$(i%)+"." terminate end
sub corriger_ligne() for zz%=1 to 19 e$=tab1$(zz%):f$=tab2$(zz%) res%=dll_call5("ReplaceStringInString",adr(a$),adr(e$),adr(f$),adr(a$),0) next zz%
e$="'":f$="'":res%=dll_call5("ReplaceStringInString",adr(a$),adr(e$),adr(f$),adr(a$),0) e$="Ã ":f$="à":res%=dll_call5("ReplaceStringInString",adr(a$),adr(e$),adr(f$),adr(a$),0) end_sub
sub chercher() te$=string$(255," ") res%=abs(dll_call3("SearchStringList",object_internal(2),adr(element$),adr(te$))) end_sub Pour info, les noms des fichiers recherchés correspondent en fait aux mots de la langue française, comme on peut les trouver ici: http://www.pallier.org/liste-de-mots-francais.html | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Objet WebBrowser. Mer 12 Aoû 2020 - 16:04 | |
| Ecoute, fais un extrait du code, juste avec les accès au WB, sans toute cette gestion de fichiers Juste une hnnête URL URL, la gestion de l'URL pr WebBrowser et une capture de ce que tu constates.
J'ai tenté de déactiver les histoires de fichiers et dossiers, mais rien ne se passe. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Objet WebBrowser. Mer 12 Aoû 2020 - 16:16 | |
| Voici donc une version du code corrigé: - Code:
-
dim a$, a_partir_de%, c$, crlf$, d$, debut$, e$, element$, f$, fic$, jusque%, lettre$, lien$, nom$, nombre%, p$, url$, i%, k%, n%, res%, tab1$(19), tab2$(19), te$, wb%, zz%
crlf$=chr$(10)+chr$(13)
lien$="https://dictionary.cambridge.org/dictionary/french-english/"
dll_on "kgf"
maximize 0
memo 1 left 1,550:width 1,500:height 1,700 bar_both 1 font_size 1,12:font_bold 1:font_color 1,0,0,255
dlist 2:dlist 3
dlist 4:file_load 4,"mots.txt"
fic$="dico_cambridge.txt" if file_exists(fic$)=1 then file_load 3,fic$
wb%=dll_call1("WBCreate",handle(0)) res%=dll_call4("WBLocate",0,0,500,700)
c$="Ã:copyright: ê Ã:registered: è Å“ ç É ï â ä û ô ß ö ü Ãœ Ö ù à " d$="é ê î è oe ç é ï â ä û ô ß ö ü Ü Ö ù à "
debut$=time$
for k%=1 to 19 tab1$(k%)=mid$(c$,k%*3-2,2) tab2$(k%)=trim$(mid$(d$,k%*3-2,2)) next k%
for n%=1 to count(4) nom$=item_read$(4,n%)
if right$(nom$,4)=".htm" then nom$=left$(nom$,len(nom$)-4) caption 0,str$(n%)+"/"+str$(count(4))
url$=lien$+nom$ res%=dll_call2("WB_Url",wb%,adr(url$)):wait 600 res%=dll_call2("WB_CopyToMemo",wb%,handle(1)):wait 600
if trim$(item_read$(1,1))="" then wait 1000:res%=dll_call2("WB_CopyToMemo",wb%,handle(1)):wait 1000
a$=item_read$(1,1) if instr(lower$(a$),"nous ne pouvons")>0 message "Coupure Internet !" terminate end_if
for i%=1 to count(1) a$=item_read$(1,i%) if a$<>"" then corriger_ligne() item_add 2,a$ next i%
' Le mot comporte-t-il des traductions ? element$="Translation of ":chercher() if res%>0 for i%=res%-1 to 1 step -1:item_delete 2,i%:next i%
for i%=1 to count(2) a$=trim$(item_read$(2,i%)) if instr(a$,"GLOBAL French-English Dictionary")+instr(a$,"PASSWORD French-English Dictionary")>0 then exit_for ' Translation of xénophobie – French–English dictionary zz%=instr(a$,"Translation of "):if zz%>0 then a$=trim$(left$(a$,instr(a$,"–")-1)) if a$<>"" then item_add 3,a$ next i% item_add 3,"*" file_save 3,fic$ end_if
clear 1:clear 2 next n%
i%=0 for k%=1 to count(3) a$=item_read$(3,k%) if instr(a$,"Translation of ")>0 then i%=i%+1 next k%
message "Début: "+debut$+", fin: "+time$+crlf$+crlf$+"Nombre de mots traduits: "+str$(i%)+"." terminate end
sub corriger_ligne() for zz%=1 to 19 e$=tab1$(zz%):f$=tab2$(zz%) res%=dll_call5("ReplaceStringInString",adr(a$),adr(e$),adr(f$),adr(a$),0) next zz%
e$="'":f$="'":res%=dll_call5("ReplaceStringInString",adr(a$),adr(e$),adr(f$),adr(a$),0) e$="Ã ":f$="à":res%=dll_call5("ReplaceStringInString",adr(a$),adr(e$),adr(f$),adr(a$),0) end_sub
sub chercher() te$=string$(255," ") res%=abs(dll_call3("SearchStringList",object_internal(2),adr(element$),adr(te$))) end_sub Quant au fichier mots.txt, tu peux récupérer une partie des mots du site ici (par exemple les 200 premiers mots), puis enregistrer la sélection dans ce fichier mots.txt: http://www.pallier.org/liste-de-mots-francais.htmlMerci de la suite. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Objet WebBrowser. Mer 12 Aoû 2020 - 16:39 | |
| Je constate que pour chaque mot dans la liste, le programme va chercher une page sur le site choisie (toujours l même,d'ailleurs... je ne vois nulle part apparaître le mot choisi). Puis, dans le mémo de droite,, il y a le contenu de la page qui s'affiche sous forme de texte. Ca semble marcher, bien que j'aie l'impression que l'URL n'est pas correcte puisque la page chargée est neutre, pas liée u mot choisi. C'est après que ça se gâte. Je ne comprends pas ceci: - Code:
-
if res%>0 for i%=res%-1 to 1 step -1:item_delete 2,i%:next i%
for i%=1 to count(2) Si la DLIST 2 contient des lignes, tu commences par les supprimer, puis tu boucles sue ces lignes et, forcément, il y a un plantage par "index out of bounds" dans le second FOR... Normal, non ? Je pense que tu devrais revoir la logique de ton programme. | |
| | | Contenu sponsorisé
| Sujet: Re: Objet WebBrowser. | |
| |
| | | | Objet WebBrowser. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |