Matware456
Messages postés19Date d'inscriptionjeudi 23 novembre 2006StatutMembreDernière intervention27 août 2009
-
12 avril 2009 à 12:37
Matware456
Messages postés19Date d'inscriptionjeudi 23 novembre 2006StatutMembreDernière intervention27 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 ?
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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...
Matware456
Messages postés19Date d'inscriptionjeudi 23 novembre 2006StatutMembreDernière intervention27 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...