begin process at 2012 02 12 00:06:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Optimisation du code

 > CREATION DE FICHIER TLB A PARTIR D'UN VBP

CREATION DE FICHIER TLB A PARTIR D'UN VBP


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Optimisation du code Niveau :Débutant Date de création :23/09/2003 Date de mise à jour :27/09/2003 18:48:14 Vu / téléchargé :7 245 / 564

Auteur : EBArtSoft

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
[Cree des fichiers de definition d'API pour un projet VB]
Cette source m'a été inspiré par un code de Renfield (merci a toi)
et parce que je cherche a reelement augrmenter la performance de
mes création...

Donc ce prog crée a partir d'un vbp (uniquement) un fichier ODL
reprenant l'ensemble de vos declaration API puis le compile en
un TLB que l'on peut ajouter directement dans son projet
(par la commande "reference")

cette premiere version gere uniquement le vbp
et les declaration sur une seule ligne de plus elle
ne gere pas les "Enum" et les "Type"

tous cela viendra plus tard (si j'en ressent le besoin)

il comprend aussi un gestionnaire des GUID/TypeLib
pour ne pas saturer votre base de registre apres une dixaine de tlb créé !

Source

  • 'Voir le Zip
  • ARggggg Nix je doit avouer que votre nouvelle frame
  • n'est pas totalement au point ! lol
  • 'Mis a jour
  • '
  • ' - gere les type
  • ' - gere les enum
  • ' - plusieurs bugs fixés
  • '
  • ' reste encore plein de trucs a faire...
  • ' je le ferait plus tard
'Voir le Zip

ARggggg Nix je doit avouer que votre nouvelle frame
n'est pas totalement au point ! lol

'Mis a jour 
'
' - gere les type
' - gere les enum
' - plusieurs bugs fixés
'
'  reste encore plein de trucs a faire...
'  je le ferait plus tard 

 Conclusion

On peut gagner plus de 20% de performance sur les appel d'API
dans les boucle critiques, ce n'est pas une solution universel
mais c'est les petits plus qui font les grande reussite...

b@nne prog


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture COLOR PICKER
Source avec Zip Source avec une capture SAVEPICTURE() AU FORMAT PNG, JPG, TIF ETC...
Source avec Zip Source avec une capture SAUVEGARDER UNE IMAGE EN PNG
Source avec Zip Source avec une capture VB6 ADDIN - FAITES DISPARAITRE LES MSGBOX D'ERREUR IDE
Source avec Zip Source avec une capture MONITEUR CPU

 Sources de la même categorie

Source avec Zip FONCTIONS PRATIQUE POUR LISTVIEW par Galactus13
Source avec une capture Source .NET (Dotnet) HISTOGRAMME - SUITE - GRAPHIQUE DE BARRES VERTICALES POUR UN... par tchconst
Source .NET (Dotnet) HISTOGRAMME (BIS) BARRES VIA DATATABLE 100 % PERSONNALISÉ par tchconst
Source avec une capture Source .NET (Dotnet) AFFICHER UN HISTOGRAMME PERSONNALISÉ par tchconst
Source avec une capture Source .NET (Dotnet) PROFIL BINAIRE D'UN OBJET par tchconst

Commentaires et avis

Commentaire de Renfield le 23/09/2003 21:52:02 administrateur CS

Sympa, bonne idée, je n'y avait pas pensé, sous cette forme.....

Commentaire de shadowmoy le 25/09/2003 09:38:27

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 !!!

Commentaire de shadowmoy le 25/09/2003 09:40:02

ps : ca marche aussi pour les autres types de compilation comme les dll ou ocx :)
++

Commentaire de Afyn le 23/01/2004 22:15:17

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

Commentaire de Afyn le 24/01/2004 22:15:35

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

Commentaire de EBArtSoft le 24/01/2004 23:05:57 administrateur CS

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

@+

Commentaire de Afyn le 25/01/2004 09:48:09

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 !)

Commentaire de Afyn le 25/01/2004 10:15:18

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

Commentaire de EBArtSoft le 25/01/2004 11:18:49 administrateur CS

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 ? ;-) )

@+

Commentaire de Afyn le 25/01/2004 12:20:24

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

Commentaire de Afyn le 25/01/2004 12:41: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

Commentaire de shadowmoy le 29/06/2004 11:36: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 ...



Commentaire de Afyn le 29/06/2004 13:24:03

C koi fbsl ?

Afyn

Commentaire de cyci le 10/08/2004 11:23:45

J'ai un pb, quand on met des enum, le tlb n'est pas créé... Dans ce cas seul le fichier odl apparaît...

Commentaire de draluorg le 14/05/2007 13:15:34

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)

++

Commentaire de EBArtSoft le 14/05/2007 21:03:11 administrateur CS

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

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales