Pointeur de méthode [Delphi] - Delphi/Pascal - Programmation
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...
Marsh Posté le 06-05-2002 à 15:46:04
Bon ben voila :
Citation : |
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...
Marsh Posté le 07-05-2002 à 10:05:04
up
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 ?
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 ?
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.
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 ?
Marsh Posté le 07-05-2002 à 11:52:00
Ben un truc du genre
function MonCallBack(i: int): bool;
begin
ProgressBar1.value := i;
end;
Marsh Posté le 07-05-2002 à 11:59:50
Pas très clair tout ça.
Il dit quoi le compilo ?
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)
Marsh Posté le 07-05-2002 à 12:30:27
Ouais mais bon sans le message exact ça aide pas beaucoup
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...
Marsh Posté le 07-05-2002 à 12:40:17
Et les fonctions AviSaveV, le stream, les options, etc ... il connaît pas.
Marsh Posté le 07-05-2002 à 12:45:39
Ben...
VFW.pas doit bien trainer sur Delphi Jedi...
Marsh Posté le 07-05-2002 à 13:03:10
Ouais bon tu me passeras le message d'erreur...
Marsh Posté le 07-05-2002 à 13:06:28
okai okai... Thx
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...
Marsh Posté le 02-05-2002 à 10:51:09
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