OVH Cloud OVH Cloud

récupérer un objet externe

11 réponses
Avatar
titouille
Bonjour !!

Je travaille bcp avec Flash, et j'aurai voulu faire des interactions
avec un serveur socket en python. Flash utilise du XMLSocket mais peut
passer n'importe quoi, pas uniquement du XML. Je pensais donc essayer de
passer des objets Flash (classe native Object).
Seulement, lorsque je récupère une valeur avec python, j'ai bien un
"object Object" mais je n'arrive pas à récupérer ses attributs...
Lorsque je passe un tableau, par contre, ça fonctionne, je peux
récupérer les valeurs...

Y a-t-il un moyen de savoir le contenu d'une variable, par exemple comme
la commande print_r en php ?? ou y a-t-il un moyen de désérialiser
l'objet récupéré ?? ou bien ai-je intérêt à passer par de simples
tableaux et recréer un objet avec une classe python ?`

merci pour vos suggestions :)

Thierry

1 réponse

1 2
Avatar
titouille
Merci bcp pour ces réponses... je connaissais à peu près le
fonctionnement des handles, mais tu as bien aidé à une compréhension
plus saine, par un exemple :)

Je vais suivre ton conseil, et passer par valeur plutot que par handle,
ça sera bcp plus simple, et vu tes explications, je risque même de ne
pas réussir mon coup, en tentant les handles.

Enfin, merci pour ton aide :) bonne continuation à toi !

Thierry


Michel Claveau - abstraction méta-galactique non triviale en fuite
Re

D'abord, je ne peux parler que sous windows, ayant trop peu d'expérience
sous d'autres OS.

Je n'ai pas travaillé avec Flash particulièrement, parce que je trouve que
l'accès aux éléments de l'environnement d'exécution est trop difficile. En
comparaison, avec Internet-Explorer, le DOM (modèle-hiérarchique-objet) est
clairement défini, et accessible de l'intérieur, comme de l'extérieur. Je
m'oriente donc plutôt vers une intégration Internet-explorer <--> Python. Je
suis en expérimentation, et ça avance doucement.



Concernant les serveurs COM.

C'est une "technologie" qui a très proche des active-X (évènements et aspect
graphique en moins ; facilité d'intégration en plus).


Concernant les échanges de données.

Un handle, c'est un pointeur. Sous windows, c'est un entier long. Si tu
transfères un handle de flash vers Python, tu vas récupérer un entier long.
Si tu veux utiliser cette méthode, il te faudra donc te débrouiller pour
savoir ce qu'il y a derrière ce handle. Ce peut être simplement la zone
mémoire où sont les données, mais cela peut aussi être une collection de
pointeurs, qui renvoient vers des fonctions, des propriétés, des données,
des structures, etc.

De plus, sous windows, il y a une histoire d'espace d'exécution. Il peut
arriver que le programme qui lit le handle n'ait pas accès à la zone mémoire
du programme qui a fourni le handle. Cela pour des questions évidentes de
sécurité.

J'ai une seule utilisation des handles. Entre Paradox et Python (avec
cTypes). Paradox envoie un handle sur une variable string, binary, ou
graphique. Sous Python, j'utilise une DLL, pour faire des transferts
directs, entre la variable paradox et une "variable cTypes". Cela
fonctionne, mais uniquement parce que, dans Paradox, une telle variable ne
bouge pas en mémoire, et parce que Python est appelé via un serveur COM,
donc dans le même espace d'exécution.

Lorsque j'avais essayé avec d'autres variables Paradox (number, mémo,
tableaux, structures, tcursor, enregistrements, uiobject, etc.), je n'ai
jamais pu trouver les données elles-mêmes.

Autre échec, aussi, en essayant d'utiliser Python depuis un autre process
(les espaces de données étant mutuellement non accessibles).


Bref, je te conseille fortement de travailler sur l'échange de valeurs,
plutôt que de pointeurs d'objets (handle).


@-salutations


1 2