Plugins WinAMP (In & Out)

Programmation d'applications complexes
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Et sinon mon test, il marche? :cry:
NY152
Messages : 148
Inscription : dim. 14/mai/2006 20:41

Message par NY152 »

non ça plante
.:NY152:.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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...
NY152
Messages : 148
Inscription : dim. 14/mai/2006 20:41

Message par NY152 »

O.o
.:NY152:.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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
NY152
Messages : 148
Inscription : dim. 14/mai/2006 20:41

Message par NY152 »

Ah ce code fonctionne, pourquoi je me le demande, il ne diffère pas des autres.
.:NY152:.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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!
NY152
Messages : 148
Inscription : dim. 14/mai/2006 20:41

Message 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 :D
.:NY152:.
Anonyme

Message par Anonyme »

je survole le topic , essaye ProcedureC ou procedureCDLL , la convenction d'appel ne doit pas être la même.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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
Anonyme

Message 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..
NY152
Messages : 148
Inscription : dim. 14/mai/2006 20:41

Message 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 ^^
.:NY152:.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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
NY152
Messages : 148
Inscription : dim. 14/mai/2006 20:41

Message par NY152 »

J'ai peur de pas trop comprendre le fonctionnement si on change ça.
.:NY152:.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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.
Répondre