8
votes

Comment transmettre une fonction pour le paramètre avec VB6?

Comment puis-je faire pour réussir une fonction par paramètre, plus tard à être appelée dans VB6? serait quelque chose comme ce que j'ai besoin, peut être n'importe laquelle de ces options: xxx


3 commentaires

Cela doit-il être l'objet de fonction elle-même? Pourquoi ne pas transmettre une chaîne, utilisez-la une instruction de cas pour appeler la fonction appropriée?


J'utilise "microsoft.xmlhttp" puis appelant la méthode nécessite myHTTP.OneReadyStatechange = xfunction. Et xfunction doit être transmis par le paramètre


Je ne me souviens pas trop bien VB6, mais je pense que vous devez utiliser l'adresse de pour enregistrer un rappel. Et la fonction doit être déclarée dans un module.


3 Réponses :


6
votes

IIRC Il y a une adresse de la fonction dans VB6 pour obtenir des adresses de fonction, mais vous aurez probablement une grande difficulté en réalité en réalité l'adresse de cette fonction de VB6.

Le moyen SOP de gérer cela est avec callbyname () qui vous permet de, vous savez, appelle des fonctions, etc. par leurs noms.

Enfin, vous pouvez également prendre la route haute, en utilisant la solution Standard OO à cette option: Au lieu de passer la fonction, écrivez votre propre classe qui implémente une interface spéciale de votre propre conception myFunkerface . Cette interface n'a qu'une méthode fioletocall (..) , que vous pouvez implémenter dans différentes classes pour appeler les différentes fonctions dont vous avez besoin. Ensuite, vous passez une instance de l'une de ces classes à votre routine, ce qui le reçoit comme myfunCtonInterface et appelle la méthode mode de fonctionnement sur elle. Bien sûr, cela prend beaucoup de changements de conception mineurs ...


1 commentaires

OK, étant donné que je choisirai une autre structure, car j'ai besoin d'une autre solution, merci



1
votes

Votre commentaire que vous utilisez Microsoft.XMLHTTP OnReadyStatechange est intéressant. Le page MSDN pour OnReadyStatechange dit qu'il "est Conçu pour une utilisation dans les environnements de script et n'est pas facilement accessible dans Microsoft® Visual Basic® ".

La même page dit que dans Visual Basic 6, vous devriez le faire. Mettre cette déclaration de variable au niveau du module p> xxx pré>

et ensuite vous pourrez gérer l'événement de manière habituelle comme celle-ci. P>

 Private Sub xmldoc_onreadystatechange()
   ' Deal with the event here '
 End Sub


1 commentaires

Merci, toutes les 3 réponses m'a beaucoup aidé à décider de la décision de faire.



3
votes

Vous ne pouvez pas passer une fonction, mais vous pouvez transmettre un objet qui se comporte en fonction (appelé un "foncteur" parfois). Je l'utilise tout le temps. Si votre classe "Fonction" implémente une interface, l'appel sera sécurisé. Par exemple:

Classe abstraite (interface) iaction.cls: xxx

foncteur qui affiche une URL dans le navigateur par défaut: xxx

Vous pouvez maintenant créer un tas de ces classes, les enregistrer dans une collection, les transmettre à une fonction ou une méthode qui s'attend à une iration, etc ...


1 commentaires

Merci, toutes les 3 réponses m'a beaucoup aidé à décider de la décision de faire.