En delphi, probleme lors de l'importation d'une dll

Résolu
Signaler
Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006
-
Messages postés
8
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
7 février 2010
-
Bonjour

Je dispose d'une dll créée en VB et qui permet d'utiliser un serveur mail (TeamWare) directement depuis une application propre.
Cette dll comporte un objet GRmail qui, via ses méthodes et propriétés, permet d'envoyer un mail, ...

Je l'ai importé dans mon projet via 'Import type library'. Delphi a généré un fichier _TLB, dont voici une partie du code :

procedure TGRmail.Set_password(var Param1: WideString);
{ Warning: The property password has a setter and a getter whose
types do not match. Delphi was unable to generate a property of
this sort and so is using a Variant as a passthrough. }
var
InterfaceVariant: OleVariant;
begin
InterfaceVariant := DefaultInterface;
InterfaceVariant.password := Param1;
end;

Dans mon application, j'assigne une valeur à la propriété 'Password' de l'objet :

with frmsuivi.tw_suivi do
begin
password := 'motdepasse'; ...

Dans la procédure procedure TGRmail.Set_password(var Param1: WideString); la variable Param1 qui devrait contenir 'motdepasse' contient quelque chose de complétement farfelu et j'ai une exception EAccessviolation lors de InterfaceVariant.password := Param1;

Je sais qu'il y a un problème au niveau des types de variable lors des échanges entre application delphi et dll d'autres langages mais je ne suis pas persuadé de cela dans mon cas.

Où je me plante complètement ou alors quelqu'un a une idée.

Merci
Vincent Stryckmans

4 réponses

Messages postés
309
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
Salut,

Il me semble avoir rencontrer un problème similaire.
Mon problème était que je devais passer en paramètre d'une function un WideString et cela plantait aussi.

Il me semble que J'avais résolu mon problème, car le paramètre que je passait était contenu dans une Variable de type String et non WideString j'ai donc crée une variable WideString et cela fonctionnait mieux.

Olivier
Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006

BINGO !!

Merci à toi Olivier.

Vincent Stryckmans
Messages postés
309
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
Ma mémoire ne me trahis pas encore ;)

Bonne Prog,

Olivier.
Messages postés
8
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
7 février 2010

Où avez-vous trouvez la dll , j'en aurais besoin
Merci