resalu tout le monde ! me revoilà avec un nouveau pb ... j'pense que ça sera surement plus simple à résoudre puisqu'il s'agit maintenant de delphi/pascal objet...
alors, voilà, j'ai une fonction que j'importe d'une dll avec le prototype suivant :
Code :
- Function bStartFluxDoppler(pbDataRead:TPtrDataPack; Fonction: TPtrProcedure): BOOLEAN; cdecl; external 'DLLDiadop.DLL';
|
avec TPtrProcedure, un type déclaré de la façon suivante :
Code :
- TUneProcedure = Procedure of object;
- TPtrProcedure= ^TUneProcedure;
|
ensuite, j'ai une méthode membre d'une classe que je veux utiliser dans la première fonction :
Code :
- TUneClassePeuNimporte = class
- public
- procedure traitementAcquisition;
- end;
|
mais lorsque je tape ça :
Code :
- bStartFluxDoppler(@dataPack, @traitementAcquisition);
|
le compilo me répond inlassablement : Variable Requise...
(a oui, dataPack :
Code :
- dataPack: TDataPack;
|
avec
Code :
- TDataPack = array[0..255] of Byte;
|
alors, d'après la doc :
Citation :
Ce message d'erreur est produit lorsque vous essayez de prendre l'adresse d'une expression ou d'une constante. program Produce;
var
I: Integer;
PI: ^Integer;
begin
PI := Addr(1);
end.
Une constante comme 1 n'a pas d'adresse mémoire, vous ne pouvez donc pas lui appliquer l'opérateur @ ou la fonction standard Addr. program Solve;
var
I: Integer;
PI: ^Integer;
begin
PI := Addr(I);
end.
Vous devez vérifier que vous prenez l'adresse de la variable.
|
alors ma question :
je me suis planté dans mon code où est ce qu'on en peut pas récupérer l'adresse d'une méthode de classe ?
(ça marche très bien si je 'sors' ma fonction traitementTruc de ma classe 'unClassPeuNimporte' mais ça m'arrange po)
merci d'avance !
[jfdsdjhfuetppo]--Message édité par Moustaaki le 29-05-2002 à 17:44:16--[/jfdsdjhfuetppo]
---------------
Boolay for ever...