[Delphi] Pointeur de méthode

Pointeur de méthode [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 02-05-2002 à 10:51:09    

:hello:  
 
J'ai un petit problème avec cette fonction de VFW : http://msdn.microsoft.com/library/ [...] c_62pi.asp
 
En fait, j'ai un pb avec le paramètre lpfnCallback  
Dans la déclaration en Delphi, il faut un  
TAVISAVECALLBACK = function(i: integer): longbool;
 
Mais si dans mon prog, je définis une fonction selon la méthode normale avec la bonne déclaration de paramètres, le compilo déclanche une erreur "precédure au lieu de pointeur de méthode"
 
Je n'arrive pas à trouver d'infos sur les pointeurs de méthode dans l'aide...
 
Une idée ?


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 02-05-2002 à 10:51:09   

Reply

Marsh Posté le 02-05-2002 à 11:09:11    

Si tu me mets un peu de code (ce que tu as fait comme déclaration de fonction) et le message d'erreur exact du compilateur je pourrai probablement t'aider...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 06-05-2002 à 15:46:04    

Bon ben voila :
 

Citation :


// La fonction à problèmes est  
 
TAVISAVECALLBACK = function(i: int): BOOL; pascal;
     
function    AVISaveV(
    szFile          : LPCSTR;
    pclsidHandler   : PCLSID;
    lpfnCallback    : TAVISAVECALLBACK;
    nStreams        : int;
    var ppavi       : IAVISTREAM;
    var plpOptions  : PAVICOMPRESSOPTIONS
    ): HResult; stdcall; external AVIFILDLL name 'AVISaveVA';
     
// voila l'utilisation que j'en fait
// il faut remplacer le 2e nil...
 
AVISaveV(PChar(AppDir+'final.avi';),nil
,nil,1,WrkStream,WrkOptions);
 


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 06-05-2002 à 15:47:22    

Bon ben voila :
 
// La fonction à problèmes est  
 
TAVISAVECALLBACK = function(i: int): BOOL; pascal;
     
function    AVISaveV(
    szFile          : LPCSTR;
    pclsidHandler   : PCLSID;
    lpfnCallback    : TAVISAVECALLBACK;
    nStreams        : int;
    var ppavi       : IAVISTREAM;
    var plpOptions  : PAVICOMPRESSOPTIONS
    ): HResult; stdcall; external AVIFILDLL name 'AVISaveVA';
     
// voila l'utilisation que j'en fait
// il faut remplacer le 2e nil...
 
AVISaveV(PChar(AppDir+'final.avi';),nil,nil,1,WrkStream,WrkOptions);
 
Je ne te met pas le message d'erreur parce-qu'en fait j'en obtient plusieurs selon le type d'entrée que je met...


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 07-05-2002 à 10:05:04    

:bounce: up


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 07-05-2002 à 10:10:20    

Le pointeur que tu passes à AVISaveV, c'est bien un pointeur sur une fonction, et pas sur une méthode ?

Reply

Marsh Posté le 07-05-2002 à 10:39:45    

Tu es sûr tu type de TAVISAVECALLBACK ?
Et pourquoi tu passes nil à la fonction par après ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-05-2002 à 11:27:08    

Ben le type TAVISAVECALLBACK est déclaré comme ça dans VFW.pas, j'ai donc pas trop le choix !
 
Sinon, je lui met nil pour que la fonction daigne se lancer mais du coup, je n'ai pas de callback.


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 07-05-2002 à 11:28:43    

Ha.
:/
Et sinon tu la déclare comment ta fonction quand tu veux utiliser le callback ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-05-2002 à 11:52:00    

Ben un truc du genre
 
function MonCallBack(i: int): bool;
begin
  ProgressBar1.value := i;
end;


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 07-05-2002 à 11:52:00   

Reply

Marsh Posté le 07-05-2002 à 11:59:50    

Pas très clair tout ça.
Il dit quoi le compilo ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-05-2002 à 12:24:56    

antp a écrit a écrit :

Pas très clair tout ça.
Il dit quoi le compilo ?  




 
Bon, ben on va essayer de reprendre du début :
 
AVISave est une fonction qui crée un fichier AVI à partir de streams en mémoire...
Comme le procédé peut être un peu long (cf tout bon encodage en DivX), il y a prévu un callback : cad un moyen pour le programmateur de savoir le % de progression. Le callback fonctionne comme suit : il faut une fonction qui reçoit le % de progression en paramètre et revoie true ou false (pour pouvoir interompre la création).
 
Ici, j'aimerais pouvoir spécifier à AVISave l'adresse d'une fonction type
 
function MonCallBack(i: int): bool;  
begin  
 ProgressBar1.value := i;
 MonCallBack := True;  
end;
 
ce qui permet de suivre l'avancement de l'enregistrement.
 
Si je fais  
AVISaveV(PChar(AppDir+'final.avi';),nil
,MonCallBack,1,WrkStream,WrkOptions);
ou
AVISaveV(PChar(AppDir+'final.avi';),nil
,@MonCallBack,1,WrkStream,WrkOptions);
ça ne marche pas... (pas le message exact en tête)


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 07-05-2002 à 12:30:27    

Ouais mais bon sans le message exact ça aide pas beaucoup :/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-05-2002 à 12:35:13    

Ben, tu peut pas essayer de créer un projet ?  :??:  
Tu verra bien ce que ça donne juste en lançant la vérif du code...


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 07-05-2002 à 12:40:17    

Et les fonctions AviSaveV, le stream, les options, etc ... il connaît pas.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-05-2002 à 12:45:39    

Ben...
VFW.pas doit bien trainer sur Delphi Jedi...


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 07-05-2002 à 13:03:10    

Ouais bon tu me passeras le message d'erreur...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-05-2002 à 13:06:28    

okai okai... Thx


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 07-05-2002 à 14:13:24    

Je t'aurais bien aidé en cherchant VFW etc... comme tu as dit, mais là y a ADO qui m'énerve (BDE rulez), et si je me dépèche pas je vais devoir bosser jeudi & vendredi...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed