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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  problème après compilation...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème après compilation...

n°980702
chnocombre
Posté le 14-02-2005 à 09:34:18  profilanswer
 

bonjour, j'ai un petit prob avec vb6. j'ai un programme qui marche sans problème en mod débug mais qui me retourne une erreur de type runtime error '91' (object variable non défini ou block with not set) une fois que je l'ai compilé en .exe
 
c'est un prob du compilateur?  qqn sait comment corriger ça? ou c'est juste mon code qui doit avoir un prob? mais alors pourquoi il passe lorsque vb6 est ouvert? je comprend pas...

mood
Publicité
Posté le 14-02-2005 à 09:34:18  profilanswer
 

n°980710
FlorentG
Unité de Masse
Posté le 14-02-2005 à 09:48:25  profilanswer
 

Envoi le morceau qui bug une fois

n°980717
chnocombre
Posté le 14-02-2005 à 10:03:03  profilanswer
 

j'ai trouver un "truc" pour le faire passer finalement. si je rajoute un block:  

Code :
  1. With ma_form
  2.     mon_code   
  3. End With


ça passe. ce qui est un peu bête étant donnée que je travail avec une seule form... je sais pas pourquoi il veut que je la lui reprécise à chaque fois que je vais chercher des infos dessu
edit: ben maintenant ça marche plus avec ça non plus  :pt1cable:


Message édité par chnocombre le 14-02-2005 à 10:15:27
n°980725
chnocombre
Posté le 14-02-2005 à 10:17:52  profilanswer
 

voila le code (attention c'est long):

Code :
  1. Private Function funcMSN()
  2.    
  3.     '
  4.     'Declare Some variables for the process
  5.     '
  6.    
  7.     With frmAuditMaker
  8.        
  9.         'Domain and searchengine string
  10.         Dim strDomain As String
  11.         Dim strSearchEngine As String
  12.    
  13.         'Double for the navigation in the code
  14.         Dim dblStart As Double
  15.         Dim dblLen As Double
  16.        
  17.         'Byte for the place of the keywords
  18.         Dim bytPlaceCounter As Byte
  19.        
  20.         'String for the text check
  21.         Dim strKeywords As String
  22.         Dim strBody As String
  23.         Dim strCheck As String
  24.        
  25.         'Boolean if the domain is found
  26.         Dim boolTargetFound As Boolean
  27.        
  28.         'Html Object to read html code
  29.         Dim Webdoc As MSHTML.HTMLDocument
  30.         Set Webdoc = wbbViewer.document
  31.        
  32.         '
  33.         'Initialize Variables
  34.         '
  35.        
  36.         'Replace " " by + for the search engin and the é too
  37.         strKeywords = Replace(.txtKeywords, " ", "+" )
  38.         strKeywords = Replace(strKeywords, "é", "%C3%A9" )
  39.        
  40.         'Place Counter initialize
  41.         bytPlaceCounter = 1
  42.        
  43.         'Initialize Domain name
  44.         strDomain = .txtDomain.Text
  45.        
  46.         'Initialize searchengine
  47.         strSearchEngine = .cmbSearchEngine.Text
  48.        
  49.         'Load webPage
  50.         .wbbViewer.navigate strSearchEngine & "/results.aspx?q=" & strKeywords & "&FORM=QBHP"
  51.        
  52.         'Wait for the page to be full loaded
  53.         Do Until .wbbViewer.readyState = READYSTATE_COMPLETE
  54.         DoEvents
  55.         Loop
  56.        
  57.        
  58.         'Initialize to not found
  59.         boolTargetFound = False
  60.        
  61.         'Initialize the HTML Body to check
  62.         strBody = Webdoc.body.innerHTML
  63.        
  64.         'Initialize the check start
  65.         dblStart = 1
  66.        
  67.         'Initialize the place
  68.         bytPlaceCounter = 1
  69.        
  70.         'Initialize the starting point (for MSN only)
  71.         dblStart = InStr(dblStart, strBody, "</P></LI></UL></DIV></DIV>", vbTextCompare) + 1
  72.        
  73.         'Check the HTML for the 50 first result
  74.         Do Until bytPlaceCounter = 50
  75.            
  76.             'Récupération du texte de la page web:
  77.             dblStart = InStr(dblStart, strBody, "<H3><A href=", vbTextCompare) + 13
  78.            
  79.             'Obselete test, may be in use in the futur
  80.             'If Not (InStr(dblStart - 40, strBody, "<BLOCKQUOTE>", vbTextCompare)) > 20 Then
  81.            
  82.             'Initialize the lenght of string to check
  83.             dblLen = InStr(dblStart, strBody, ">", vbTextCompare) - 1
  84.            
  85.             'Save the string to check
  86.             strCheck = Mid(strBody, dblStart, (dblLen - dblStart))
  87.            
  88.             'Check the string
  89.             If Not InStr(1, strCheck, strDomain, vbTextCompare) = 0 Then
  90.            
  91.                 'Set the found variable to true
  92.                 boolTargetFound = True
  93.            
  94.                 'Exit the check
  95.                 Exit Do
  96.                
  97.             End If
  98.            
  99.             'Next place to check
  100.             bytPlaceCounter = bytPlaceCounter + 1
  101.                
  102.             'End If
  103.        
  104.         Loop
  105.        
  106.         'If the domain eas found
  107.         If boolTargetFound Then
  108.        
  109.             'Return the place found
  110.             funcMSN = bytPlaceCounter
  111.        
  112.         Else
  113.        
  114.             'Return the default value
  115.             funcMSN = "Not found in the 60 first result"
  116.        
  117.         End If
  118.        
  119.     End With
  120.        
  121. End Function


 
le but du programme: rechercher un lien pointant vers un site contenu dans strDomain, depuis une page d'un moteur de recherche (genre google) URL formée en partie de cmbSearchEngine et de strKeywords puis de trouver à quelle place ce site vient ce placer grace à bytPlaceCounter.


Message édité par chnocombre le 14-02-2005 à 10:23:19
n°980729
FlorentG
Unité de Masse
Posté le 14-02-2005 à 10:20:22  profilanswer
 

Ben genre avec les .txtDomain.Text, c'est normal qu'il te faut un bloc With ;)
 
Sinon, une remarque :D Tu as l'air de souffrir de commentite aiguë :D Je pense que des truc genre :

'Exit the check
Exit Do


Ne servent strictement à rien :/ Quand on commente un programme, on a l'habitude de ne commenter que les trucs chelous, pas les Exit Do ;)

n°980732
chnocombre
Posté le 14-02-2005 à 10:25:39  profilanswer
 

ouai je sais. mais comme je sais pas du tout qui risque de reprendre mon code un jour, je préfère tout notè... même les truc inutils (pis si on a un code avec 5 boucle Do imbriquée ça peut être bien de préciser la quelle on ferme meme si il y a les tabulations, même si 5 Do imbriquées c'est assez rare (pour ce que je fais) et un peu con...ça peut surement exister (bon le pour exit Do d'accord...)


Message édité par chnocombre le 14-02-2005 à 10:27:25
n°980735
chnocombre
Posté le 14-02-2005 à 10:29:53  profilanswer
 

pis tu va me dire que plutot de définir les variable dans la fonction j'aurais pu les importées depuis la sub ou je la lance mais comme je dois pouvoir fais des tests sur plusieur moteur de recherche différent j'ai trouver plus simple de faire une fonction par moteur... (je sais pas non plus si c'était un bon choix mais j'avais peur que le fait de débugguer l'un me casse le débuggage des autres :/)

n°980736
FlorentG
Unité de Masse
Posté le 14-02-2005 à 10:30:27  profilanswer
 

Le truc c'est que le Exit Do est explicite :) Autant alors mettre ça :

' Fin de la Sub
End Sub


:D
 
Aussi, dans ton cas, j'enlèverais le With, il ne sert pas à grand chose :/ Surtout que quand t'es plongé loin dans le code, si tu te rappelles plus sur quel objet porte le With :(
 
Même chose pour les 'Initialize searchengine. On voit bien que c'est une initialisation :D
 
Le problème en fait, c'est qu'il ne faut pas passer trop de temps à faire des commentaires. Il vaut mieux s'en tenir à l'essentiel, sinon t'en fini pas :)

n°980738
chnocombre
Posté le 14-02-2005 à 10:32:43  profilanswer
 

enfin, je comprend quand même pas pourquoi ça marche sans prob depuis VB6 et pas depuis l'exe...
edit: tiens j'ai pas mis de

Code :
  1. 'End of the Sub

j'ai du l'oublier  :sarcastic:


Message édité par chnocombre le 14-02-2005 à 10:35:05
n°980741
FlorentG
Unité de Masse
Posté le 14-02-2005 à 10:33:26  profilanswer
 

En debug, y'a toujours un tas de truc planqués en plus... Faudrait voir :(

mood
Publicité
Posté le 14-02-2005 à 10:33:26  profilanswer
 

n°980751
chnocombre
Posté le 14-02-2005 à 10:49:35  profilanswer
 

j'ai fini par utiliser la méthode que la programmation intersidéral appelle quand elle n'est plus capable
de trouver une solution à ses problèmes, quand il ne reste plus aucun espoir :
l'innomable capitaine

Code :
  1. on error resume next

n°980753
chnocombre
Posté le 14-02-2005 à 10:52:26  profilanswer
 

pis une fois que j'ai du temps je regarderais plus a fond le problème et je posterais la soluce (si je la trouve évidemment :sarcastic:)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  problème après compilation...

 

Sujets relatifs
probleme compilation avec visual c++[C++] problème de compilation (templates inside)
Probleme compilation package sous linuxProblème de compilation sur Dev-C++
[jsp]problème à la compilation : class file contains wrong class[DevC++] problème de compilation avec des templates
[wxwidget] Problème de compilation sous linuxprobleme a la compilation sous VC++ .NET
Problème de compilationProblème de compilation
Plus de sujets relatifs à : problème après compilation...


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