CREATION DE FICHIER TLB A PARTIR D'UN VBP

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 23 sept. 2003 à 21:52
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 14 mai 2007 à 21:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/16627-creation-de-fichier-tlb-a-partir-d-un-vbp

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
14 mai 2007 à 21:03
Merci Draluorg> j'ai fait beaucoup de modification depuis que je l'ai deposé et ce bug a été corrigé. mais je n'ai pas encore pris le temps de faire la mise à jour. car je ne savais pas qu'il etait encore utilisé :p
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
14 mai 2007 à 13:15
Salut,

Ce code est super simpa, je l'ai depuis un ptit temps deja, mais hier je me suis appercu qu'il declarait un long pour les api devant retourner un string.
Private declare MaFonction() as string
est devenu long Mafonction()
au lieu de BSTR MaFonction()

trois fois rien mais j'avais pas remarquer tout de suite et ca m'a bien planter mon appli, je ne sais pas comment mais ca m'a créé un swap de 2Giga (dans une bouble de test)

++
cs_cyci Messages postés 5 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 29 juin 2012
10 août 2004 à 11:23
J'ai un pb, quand on met des enum, le tlb n'est pas créé... Dans ce cas seul le fichier odl apparaît...
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
29 juin 2004 à 13:24
C koi fbsl ?

Afyn
shadowmoy Messages postés 340 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 25 août 2007
29 juin 2004 à 11:36
en y reflechissant je me demande si le parseur vb convertie pas tous simplement une partie du code vb en c++ pour ensuite le compiler ?

un peu a la maniere de bcx qui convertie du basic en C et est compilé ensuite via un compilo C gratos comme lcc ?

ca demande reflexion non ?

ca serais meme interessant un convertisseur vb --> C compilable avec lcc (qui est gratuit je le rappel) le hic c'est pour la gestion objets :/
ca demande de creer un generateur de code qui en plus supporterai les activex mais c faisable :op

fbsl le fait et lagafeuse en est l'auteur lol !

comme koi ca demande reflexion ...
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
25 janv. 2004 à 12:41
J'ai qd même regardé le travail de Renfield, j'ai trouvé une petite différences dans le fichier Odl, je sais pas si c'est important ou pas:
voila son fichier :

typedef struct
{
long Left;
long Top;
long Right;
long Bottom;
}RECT;

Voila un fichier crée par ton prog

typedef struct
{
long dwLowDateTime;
long dwHighDateTime;
} FILETIME;


La petite différence, c'est qu'il y a un "espace" entre la } et FILETIME


C'est juste pour ton info...

Afyn
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
25 janv. 2004 à 12:20
BruNews doit savoir ?
J'ai jeté un oeil sur mon book pour programmer des composants
VB, il parle du modèle COM et du langage IDL, mais c'est assez
obscur pour moi (ISBN : 2-84082-377-2)
Est ce que si l'on fait un projet de DLL active X en déclarant
des API et en le référencant dans notre prj on obtient
le même résultat qu'avec un fichier Tlb (puisque ca à l'air
d'être les mêmes mécanismes).
Je peux pas t'aider désolé. (ca me dépasse)
A+
Afyn
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
25 janv. 2004 à 11:18
Ouai je connais celui-ci mais merci pour tout ceux qui ne le connaissent pas encore j'en rajoute un si vous le permettez :

http://www.persistentrealities.com/vbfibre/index.php

Afyn>En fait j'ai modifié l'OdlCreator pour accepter les type et les constante mais j'ai un pb de referencement quand j'essais d'appeler
un API avec un type genre GetVersion

Ce que je disais pour resoudre temporairement ton pb c'est
exactement ce que tu a dit un peu plus haut c'est a dire :

- supprimer le FILETIME de l'odl
- modifier la declaration de SetWaitableTimer en
mettant [in,out] void * lpDueTime ce qui signifie que l'on
envoi un pointer de n'importe quel type (en realité un long)
dans vb ce serais ByRef lpDueTime as Any ce qui te permet
d'eviter ton pb de reference dans l'ide de vb
- puis tu compile ton *.odl en *.tlb et dans ton projet vb
tu ajoute le type FILETIME

est ce que c'est un peu plus clair ?

je ne suis pas un expert dans lelanguage odl et j'ai pas encore
compris d'ou vient ce probleme avec les "type" donc si qlq 1
sait qu'il le dise svp

(il a pas une idée mon petit Renfield ? ;-) )

@+
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
25 janv. 2004 à 10:15
Pour info ...

J'ai trouvé ce site ou on parle d'optimisation, d'API et de TLB, mais c'est en anglais, je ne sais pas si ca peut servir ...


http://www.xbeat.net/vbspeed

A+
Afyn
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
25 janv. 2004 à 09:48
C'est à dire ? :
- j'édite le fichier *.odl (avec le Bloc Note par ex)
- Je modifie la déclaration -> je supprime FILETIME et je met void
à la place (On pointe sur l'adresse mais on retourne pas de valeur
c'est ça ?)
- J'enregistre mon fichier Odl modifié ...

Et Aprés ???

-> Je vais demander à NIX de faire une rubrique communication :
avec quelques principes de base, l'emetteur du message, le
recepteur,, est ce que l'emetteur et le recepteur on le même
référentiel pour se comprendre etc ...

Je n'ai pas ton niveau de connaissance, dommage pour moi, alors
il faut m'expliquer un petit peu..., voir vulgariser, tu es exellent quand tu veux (cf La ville et les messages win).

Est ce qu'on peut pas modifier ton prog ? pour qu'il prenne en compte
les Type ?

Merci

AAA+

Afyn - Navedac
(Les cancres ont la plus grande marge de progression !)
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
24 janv. 2004 à 23:05
Afyn> bravo pour ton premier tlb ! lol
je prepare les versions que tu as demander kernel et winmm
mais ça risque de prendre un peu de temps de plus j'ai aussi
un souci avec les "type" dans les declarations qui ne passe pas

pour ton probleme definis le param comme ceci dans l'*.odl
[in,out] void * lpDueTime
et de mettre le Type FILETIME dans ton module vb
ça devrais surement marcher

@+
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
24 janv. 2004 à 22:15
J'ai réussi à créer un fichier TLB mais j'ai un problème avec la déclaration suivante:
Private Declare Function SetWaitableTimer Lib "kernel32" (ByVal hTimer As Long, lpDueTime As FILETIME, ByVal lPeriod As Long, ByVal pfnCompletionRoutine As Long, ByVal lpArgToCompletionRoutine As Long, ByVal fResume As Long) As Long

Le Type FILETIME ne passe pas
J'ai le message Type ByRef icompatible...

Comment puisje faire ?

Sinon pour mes autres déclaration ca fonctionne

Je ne sais pas si le gain est important.

A+

Afyn
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
23 janv. 2004 à 22:15
J'ai pas bien compris comment on fabrique le fichier TLB.
Mais j'aimerai bien essayer avec deux ou trois API que j'utilise.

J'pourrais avoir quelques explications simples sur la marche a suivre.

Merci coop.

A+
Afyn
shadowmoy Messages postés 340 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 25 août 2007
25 sept. 2003 à 09:40
ps : ca marche aussi pour les autres types de compilation comme les dll ou ocx :)
++
shadowmoy Messages postés 340 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 25 août 2007
25 sept. 2003 à 09:38
Pour les pocesseurs de vb6 fr (version entreprise) il suffit d'aller dans :
Projet>Propriété du projet (onglet Composant) et de cocher la case:
'Fichier serveur Distant'
A chaque compilation vb créera un tlb en plus de l'exe qu'il suffiras d'ajouter en reference à d'autres projets :)
c mieux non ?
voila pour l'info, allez à plus et bonne prog !!!
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 sept. 2003 à 21:52
Sympa, bonne idée, je n'y avait pas pensé, sous cette forme.....
Rejoignez-nous