Page 5 sur 6
Publié : sam. 15/août/2009 16:33
par Ollivier
Et sinon mon test, il marche?

Publié : sam. 15/août/2009 16:41
par NY152
non ça plante
Publié : sam. 15/août/2009 18:15
par Ollivier
J'ai les burnes contre un crépi...
Blanc et gris...
Je vous l'écris...
Cont'ce mur, j'dessine des "i"...
Sans cri...
Sans cri...
Publié : sam. 15/août/2009 19:05
par NY152
O.o
Publié : sam. 15/août/2009 23:50
par Ollivier
J'ai un hollandais chez qui ce fourbi ci-dessous fonctionne parfaitement sous VB6.
VB6
Code : Tout sélectionner
Declare Function Test Lib "Le_Nom_De_La_Dll.dll" () As String
Sub Main()
Dim x As Long
Dim MaChaine As String
x = 1000000
For a = 0 To x
MaChaine = Test
Next
End Sub
PB DLL
Code : Tout sélectionner
ProcedureDLL.I Test()
ProcedureReturn SysAllocStringByteLen_("MESSAGE DE LA DLL OK", 20)
EndProcedure
Publié : dim. 16/août/2009 14:08
par NY152
Ah ce code fonctionne, pourquoi je me le demande, il ne diffère pas des autres.
Publié : dim. 16/août/2009 20:58
par Ollivier
Page 2 de ce sujet
Ollivier a écrit :Tu devrais faire un ultime test:
Sous VB, fais le petit programme suivant:
1) D'abord, mets un message box quelconque (pour faire une pause en début de programme)
2) Puis, fais une boucle pour appeler la fonction DLL (celle qui te retourne le message "Message DLL Ok") 1 million de fois.
3) Enfin, remets un message box pour faire une pause de fin.
Réponse
ça plante l'application
MdR!
Rajoute les deux pauses MsgBox avant et après le test de 1 million de boucles qui marche nickel, ouvre le gestionnaire de tâches et vérifie que la mémoire ne perd pas de sa virginité.
Si c'est le cas, on attaque la DLL Winamp illico!
Publié : dim. 16/août/2009 22:29
par NY152
En fait j'ai trouvé la source du problème et c'était de ma faute.
J'étais partis du principe de prendre les fonctions du code pour les plugins et les adapter Procedure->ProcedureDLL. J'ai tenté de réécrire le code en appelant en interne dans la DLL les fonctions exportés en ProcedureDLL. Apparemment, y a plus de plantage nulle part ; mieux encore, les fonctions qui ne renvoyait rien fonctionne parfaitement.
Conclusion, le code est tout à fait fonctionnel maintenant.
Une fonction inexistante me manque pourtant celle de récupérer toutes les extensions des plugins d'un dossier et de les proposer à l'ouverture. Une fonction existe pour récupérer les extensions pour le plugin en cours mais les tests que j'ai pu faire pour faire une boucle avec les plugins plante le programme. À mon avis il faudrait recréer une fonction en natif dans la DLL mais je patauge sur ce point.
Pour l'erreur que tu reporte ça m'éclate aussi lol, peut être que j'avais fais une erreur quelque part, je ne suis pas parfait

Publié : lun. 17/août/2009 8:13
par Anonyme
je survole le topic , essaye ProcedureC ou procedureCDLL , la convenction d'appel ne doit pas être la même.
Publié : lun. 17/août/2009 14:03
par Ollivier
@Cpl.Bator
Si tu lis la dernière page, on a trouvé une solution, par contre, si tu as Winamp, NY152 cherche à récupérer la liste des Plug-Ins Winamp existant sur un PC. ça te dit quelquechose?
Ollivier
Publié : lun. 17/août/2009 14:25
par Anonyme
non , pas de winamp sous ma distrib.
par contre les plugins sont bien quelques part dans le dossier d'install de winamp (./plugin?)
si c'est le cas , un examinedirectory() fait l'affaire..
Publié : lun. 17/août/2009 16:26
par NY152
@Cpl.Bator Je ne cherche pas les plugins de Winamp, je les ai dans un répertoire. Ce que je cherche, c'est avoir toutes les extensions de fichiers supportées par ces plugins. Une fonction existe mais elle implique et charger les plugins d'entrée et de sortie à chaque fois et ce faisant ça plante.
@Olivier c'était pas tout à fait ça ^^
Publié : lun. 17/août/2009 17:04
par Ollivier
Ah ok...
ça complique le binz...
Je vois ceci:
Code : Tout sélectionner
Global *winamp_out_head.winamp_out_module
Global *winamp_in_head.winamp_in_module
A mon avis, il faut le transformer en cela:
Code : Tout sélectionner
Global Dim *winamp_out_head.winamp_out_module(7)
Global Dim *winamp_in_head.winamp_in_module(7)
Comme ça, ça laisse la place à 8 Plugins (de 0 à 7). Il faut ensuite remettre à jour toutes les fonctions en ajoutant en argument, le numéro de Plug-In, éventuellement mixer les infos...
Bref, sans Winamp et ses plug-in, je m'avoue incapable de t'aider intelligemment...
Ollivier
Publié : lun. 17/août/2009 19:13
par NY152
J'ai peur de pas trop comprendre le fonctionnement si on change ça.
Publié : lun. 17/août/2009 21:45
par Ollivier
Il vaudrait mieux que tu crées un sujet dans la section Débutants pour savoir qui possède Winamp avec Plug-In pour pouvoir faire les bonnes transformations, maintenant que le problème VB6 est réglé! Car, ne connaissant pas assez le sujet sur Winamp, même le fait de t'écrire le petit code que j'ai écrit pourra t'être inutile.