Convertir l'identifiant d'un composant en Real

Résolu
Matware456 Messages postés 19 Date d'inscription jeudi 23 novembre 2006 Statut Membre Dernière intervention 27 août 2009 - 12 avril 2009 à 12:37
Matware456 Messages postés 19 Date d'inscription jeudi 23 novembre 2006 Statut Membre Dernière intervention 27 août 2009 - 13 avril 2009 à 13:22
Bonjour,

Voilà je suis inscrit depuis pas mal de temps mais c'est mon premier message ici. Je suis débutant en Delphi et j'ai un petit problème :

J'utilise la classe TAVIWriter de Forman dans ma DLL de création vidéo et j'ai un problème lorsque je veux renvoyer l'identifiant du composant au programme principal, j'utilise ce code :

function CreateAVI:TAVIWriter;stdcall;
var
    AVIWriter1: TAviWriter;
begin
    ... Mon code ....
    result := AVIWriter1;
end;

Mais impossible de récupérer l'identifiant dans le programme principal, donc voici ma question : comment convertir l'identifiant du composant TAVIWriter en Real pour le faire passer facilement au programme principal ?

Et ensuite comment convertir le Real en TAVIWriter pour l'utiliser avec d'autres fonctions de la DLL ?

Merci d'avance et bonne journée !
Matware456.

3 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
12 avril 2009 à 22:40
En REAL ?

chaque instance de classe est stockée dans un pointeur qui equivaut a un entier 32bits.

en gros mieux vaut faire:

function CreateAvi : pointer;
ou
function CreateAvi: integer;

que
function CreateAvi: Real;

Real ne pouvant etre stocké dans un registre 32 bit comme l'integer.

de plus, si tu utilise la Classe TAviWriter dans ta DLL tu dois egalement la declarer dans ton unité ou tu veux l'utilisée.
donc le mieux, etant de declarer TAviWriter dans un fichier unité different du dpr de la DLL...

<hr size="2" width="100%" />
3
Matware456 Messages postés 19 Date d'inscription jeudi 23 novembre 2006 Statut Membre Dernière intervention 27 août 2009
13 avril 2009 à 07:17
Ok, merci beaucoup mais je n'ai malheureusement pas accès au code source de l'application principale... De plus, cette dernière n'accepte que les Real donc je vais coder mon programme directement en Delphi, ça sera plus simple mais du coup j'ai une nouvelle erreur.

Dès que le programme arrive à l'instruction StartRecording, il bug et me dit que 'CoInitialize n'a pas été appelé', je l'ai donc rajouté dans mon programme ainsi que CoUnInitialize mais cette dernière crée une violation d'accès.
Surtout que dans l'exemple fourni avec TAVIWriter, il n'y a pas de CoInitialize et compagnie...

Merci d'avance.
0
Matware456 Messages postés 19 Date d'inscription jeudi 23 novembre 2006 Statut Membre Dernière intervention 27 août 2009
13 avril 2009 à 13:22
C'est bon problème résolu, j'avais juste oublié d'initialiser le composant, je ne faisait que le créé.
0
Rejoignez-nous