
Envoyé par
jovalise
Une System.Address, donc éventuellement, si celle-ci est initialiser par la function qui est sensée initialiser les accès à cette address ou si elle utlise l'adresse courant, c'est à dire n'importe laquelle.
C'est ça : tu devrais normalement avoir des fonctions qui vont te retourner un "PortMidiStream*", que tu remplaceras par un System.Address. Je te conseille toutefois, pour des raisons de lisibilité, de déclarer un type explicite, par exemple :
Type PPortMidiStream is New System.Address ;
Ainsi, entre le code C et Ada, tu n'as que l'étoile qui dégage, remplacée par un préfixe "P" (pour "Pointer").
Si jamais tu vois passer un "PortMidiStream**" ou un "&PortMidiStream*" (passage par référence), tu devrais t'en sortir en mettant un "In Out" devant ton paramètre Ada.
Si jamais ton code C/C++ utilise directement un PortMidiStream sans son étoile, par contre, c'est mal barré car cela ne devrait jamais se produire (dans les interfaces publiques du moins)... Si jamais c'est le cas, tu posteras tes fichiers .H ici, que l'on jette un œil.

Envoyé par
jovalise
Une question me préoccupe également, c'est si l'adresse n'est pas initialiser, comment je dois m'y prendre pour piocher la bonne case ?
Par défaut, vu que l'implémentation est masquée, tu ne devrais jamais te retrouver avec ce cas : quand tu vas "ouvrir" un flux MIDI, soit la fonction C/C++ te retournera la bonne valeur (alors considérée comme un handle opaque, un peu dans le genre d'un FILE*), soit elle prendra en référence une variable du bon type qu'elle initialisera (cas d'un PortMidiStream** ou d'un &PortMidiStream*).
Partager