Nuances entre VB5 et VB sous Win98 et Win XP

nicrolfi Messages postés 138 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 16 avril 2013 - 30 mai 2007 à 16:59
nicrolfi Messages postés 138 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 16 avril 2013 - 5 juin 2007 à 18:09
Bonjour,

J'ai chargé un programme en VB sur ce site (programme de pilotage de moteurs pas à pas par le port //).

Je n'arrive pas à faire tourner ce programme et, c'est également l'avis de l'auteur de la source, je rencontre des difficultés peut-être dues aux différences de version.

Voici donc les questions que je me pose et des réponses pourraient beaucoup m'aider:

- sous Win XP, il semble nécessaire d'utiliser une dll d'entrée sortie par le port // (inpout.dll par exemple)
- le programme est fait dans VB6 et je n'ai que VB5. Dans VB6, le programme fonctionne (chez l'auteur) en déclarant inpout.dll en sortie comme SUB et en entrée comme Function. Ces déclarations sont écrites dans le code de la feuille VB. Dans VB5, cela ne marche pas. Ne faut il pas déclarer les SUB et Function (externes) dans un module plutôt que dans la feuille? Si oui, est-ce la même syntaxe?
- dans VB6, il ne semble plus nécessaire de déclarer des SUB et Function internes (le code de la sub ou de la function est écrit dans la feuille). Faut-il les déclarer sous VB5? Si oui, où?

Mille merci d'avance pour l'aide....car je suis bloqué...

A bientôt

66 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 mai 2007 à 17:10
De ce point de vue là, la syntaxe est strictement la même entre VB5 et VB6.

Si tu déclare tes fonctions de la dll, dans l'écran lui-même, il faut les déclarer obligatoirement en Private.
Si tu les déclare dans un module il ne faut pas les mettre Private sinon elles ne seront visible que du module.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
30 mai 2007 à 17:39
Bonjour;

Quel est le lien de cette source ?
Sur quelle ligne bloque l'exécution ? (que dit cette ligne)

Certaines fonctions de VB6 n'existent pas sous VB5 et il faut les remplacer par leur équivalent en code (Split, Replace, Instrev, ... par exemple...)
0
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
30 mai 2007 à 18:05
Bonjour,

Voici la source:
http://www.vbfrance.com/codes/PILOTER-MOTEUR-PAS-PAS-VIA-KITS-COMIO-ECO_39225.aspx

Apparemment VB bloque au lancement: "VB a rencontré un problème". Comme chez moi avec VB6 celà marche, j'ai supposé que le pb venait de l'IDE VB5, mais qu'est-ce qui ne lui plait pas???? That is the question.

Merci de l'aide

VBGenesis
0
nicrolfi Messages postés 138 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 16 avril 2013
30 mai 2007 à 18:31
Déjà merci pour ces réponses rapides.

En ce qui concerne VB5, l'aide indique quand on demande des infos sur "Declare",on obtient une page d'infos qui commence:

"Instruction utilisée au niveau module pour déclarer des références à des procédures externes d'une bibliothèque de liaisons dynamiques (DLL)."

Cela ne coûte rien d'essayer et c'est facile car c'est la   même syntaxe.

Sous VB5 faut-il déclarer les SUB et Function interne? Si oui, où?

Windows 98 demande t-il une dll pour faire des input, output par le port //?

A bientôt

Roland


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
30 mai 2007 à 19:01
Bon,
1) Je viens de lire la totalité des lignes de code de cette source et n'y ai absolument rien vu (du code écrit) que VB5 ne comprendrait pas.
2) il y a bien un problème à l'ouverture du projet ("retained is not...." ) mais il s'agit là du plus classique et c'est contournable d'au moins deux façons, dont la plus propre est encore la reconstitution du projet en y ajoutant les forms existantes une par une.
3) Je n'ai pas installé la librairie inpout32.dll par regsvr32 et il en dénonce l'absence au run du projet.

Je ne vais pas enregistrer cette librairie car elle ne me servirait à rien sans la carte correspondante.


je suis allé voir cette librairie de plus près : elle est bien compatible Windows et est en 32 bits


VB5 ne me parait n'avoir rien à voir dans cette utilisation, donc, si la librairie est bien enregistrée.


Il est par contre important que cette librairie puisse être reconnue par ton OS (32 bits ou non ?).


4) Ajoute de toutes manières un module à ton projet et mets-y en public les deuc déclarations de fonction de cette Dll.


Je ne comprends d'ailleurs pas, à ce propos, pourquoi les avoir déclarées 4 fois (dans chacune des 4 forms) en Private au lieu de ne les déclarer qu'une seule fois en Public dans un module !


Mais celà n'a toujours rien à voir avec la faille (VB5 est parfaitement capable, comme VB6, de travailler sur des fonctions déclarées en Private sur la Form qui les utilise)


Ma conclusion ? si, après avoir enregistré la DLL (et mets-là donc dans System32) par regsvr32, le problème persiste (ne trouverait pas la DLL), celà voudrait dire que ton OS n'accepte pas les fichiers en 32 bits !
Si par contre tu obtiens un autre message d'erreur, ce serait autre chose.
Dis-nous ....
0
nicrolfi Messages postés 138 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 16 avril 2013
30 mai 2007 à 19:28
à jmfmarques

Le moins qu'on puisse dire c'est que savez de quoi vous parlez...
Merci de cette aide.

L'enregistrement de la inpout.dll ne s'est pas faite lorsque j'ai glissé inpout.dll sur l'icone regsvr32. J'ai reçu le message
"c:\Windows\system32\inpout32.dll a été chargé mais le point d'entrée DIREGisterServer est introuvable. Ce fichier ne peut pas être enregistré."
Selon VBGenesis l'auteur du programme de pilotage des moteurs, cela devrait être du au fait que sur certains PC c'est nécessaire d'enregistrer, sur d'autres pas. Je n'ai donc pas insisté...
Avez-vous une autre façon d'enregistrer cette dll?(que de glisser la dll sur regsvr)

La ligne "Retained..." a été supprimée manuellement

Où puis-je aller voir si mon OS est en 32bits? C'est Windows XP.

Je vais ajouter un module avec les deux " Private Declare...", les supprimer dans les 4 feuilles...Cela ne coûte rien et je ne risque rien à le faire...

Ensuite faire un essai...je noterai exactement le message reçu et vous le transmettrai.

Y-a-t-il une solution si l'OS n'accepte pas 32 bits.? Il y a d'autres dll similaire io.dll par exemple.

Encore merci

Roland
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
30 mai 2007 à 19:34
Laisse la vérification de côté ! XP est en 32 bits. Le problème n'est donc pas là.

Mets la librairie (la dll) dans system32, puis
fais ce qui est écrit là :
http://www.microsoft.com/technet/prodtechnol/windowsserver2003/fr/library/ServerHelp/cbd1c026-0b9d-43c4-a38c-a03b508204d9.mspx?mfr=true
cette opération peut se faire en ligne de commande (Démarrer===>>exécuter)


puis relance ton projet et dis-nous ce qui se passe.
0
nicrolfi Messages postés 138 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 16 avril 2013
30 mai 2007 à 19:47
Petite question subsidiaire:
Dans le programme de VBGenesis le chemin d'accès de inpout.dll passe par System et non system32.

Est ce OK si je fais la manoeuvre dans system (qui contient aussi regsvr32).?

A +

Roland
0
nicrolfi Messages postés 138 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 16 avril 2013
30 mai 2007 à 19:55
Encore moi!

Démarrer>>exécuter

Dans la fenêtre ouvrir, suffit-il d'écrire:       regsvr inpout.dll    ? Sinon que faut-il préciser de plus?

Encore A+

Roland
0
nicrolfi Messages postés 138 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 16 avril 2013
30 mai 2007 à 20:08
Toujours moi,

J'ai fait la manoeuvre...et j'obtient toujours le même message:  ...point d'entrée...introuvable

C'est un vrai casse tête....

Roland
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 mai 2007 à 20:17
La dll inpout32.dll n'a pas besoin d'etre enregistrer dans la base de registre, d'ailleurs l'enregsitrement ne marche pas.
C'est une dll APi et non pas une dll COM, seules les dll COM doivent etre enregistrée dans la base de registre.

Je peux certifier que cette dll marche parfaitemùent avec VB5 et VB6 sur les systèmes Windows NT4.0, Windows 2000 et Windows XP.

Par contre sous Windows 98 et Millenium, je ne serais pas surpris qu'elle ne marche pas. mais sur ces systèmes là, les ports sont directement accèssible avec l'ancienne methode du temps de msdos

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
30 mai 2007 à 20:27
Bonsoir Casy,

Il EST sous XP !


La dll serait-elle corrompue ?


Je vais voir sur le net si on ne peut l'y trouver en téléchargement.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 mai 2007 à 20:30
Cherche pas, le site officiel est ici --> http://www.logix4u.net

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
nicrolfi Messages postés 138 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 16 avril 2013
30 mai 2007 à 20:45
A vous deux,

Après un essai qui date de quelques minutes:

situation: Windows XP, VB5
la inpout.dll est dans les dossier System et System32 (contenant aussi chacun regsvr32)

j'ai mis les déclaration de SUB et Function de la dll en public et dans un module
j'ai mis des ' devant les deux lignes correspondantes des 4 feuilles d'origine.

j'ai branché le moteur par le port //

Je lance

J'obtiens un message "VB a rencontré un problème et doit fermer...

Si je vais voir le rapport, j'y trouve:

AppName: vb5.exe
AppVer: 5.037.24
Mod name: inpout32.dll    ce qui me fait croire que la dll est concernée par le problème
Mod ver 0.0.0.0
Offset 00008201

Voilà les dernières nouvelles...

On va trouver...
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
30 mai 2007 à 20:55
Salut et bonsoir à tous,

Il me semble Casy que cette Dll ne fonctionne pas avec un "noyau" NT, du moins de la même techno(niveau accés sur les ports)...Je dit cela parce que je l'aie utilisée dans un prog, qui pilote les ports //, et cela plante sur les sytèmes à partir de Win2000, par contre sous 98/98Se/Me pas de souçis... 

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 mai 2007 à 21:04
Je repète donc :

"...Je peux certifier que cette dll marche parfaitemùent avec VB5 et VB6 sur les systèmes Windows NT4.0, Windows 2000 et Windows XP...."

Et elle marche aussi très bien avec VB2005

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
nicrolfi Messages postés 138 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 16 avril 2013
30 mai 2007 à 21:05
Question à VBGenesis:

Es-tu sûr que cela marche dans Windows XP??

Roland
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
30 mai 2007 à 21:06
Bon, ...

Je suis allé là :
http://www.programmersheaven.com/download/28409/download.aspx
J'y ai téléchargé la dll en cause en cliquant sur
http://www.programmersheaven.com/d/click.aspx?ID=F28409

je l'ai extraite dans system32
dans le module, j'ai déclaré ainsi :
Public Declare Function Inp Lib "C:\WINNT\SYSTEM32\InpOut32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "C:\WINNT\SYSTEM32\InpOut32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

Comme je suis sous Windows 2000, mon chemin de system32 et celui que j'ai mis en rouge
Corrige WINNT par ce que tu as chez toi Pour XP

J'ai relancé le programme et je n'ai plus d'erreur.
Essaye et dis nous
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
30 mai 2007 à 21:07
Clique durectement sur le 2ème des 2 liens pour télécharher directement cette dll.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 mai 2007 à 21:09
Jacques, lit mon post un peu plus haut, j'ai donné le site officiel de la DLL

c'est la dernière version existante à ma connaissance, cela là en tout cas marche parfaitement sur les plateformes NT

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Rejoignez-nous