2009-09-22 8 views
4

Je crée une bibliothèque ActiveX dans Delphi dans laquelle un objet particulier possède une propriété appelée DevelopmentCount avec un seul paramètre de type date. En interne, la propriété getter appelle une fonction nommée de la même manière sur un objet Delphi normal, où le paramètre unique est facultatif (ce dernier facteur peut ne pas être pertinent).Paramètres facultatifs dans les bibliothèques Active X

Lorsque nous compilons cette bibliothèque dans Delphi 2006 pour l'utilisateur final (à l'aide d'Excel VBA), il apparaît que le seul paramètre de la propriété DevelopmentCount est facultatif.

Nous avons déménagé à Delphi 2009 (nous l'utilisons depuis 6 mois ou plus). Lorsque la même bibliothèque est compilée avec Delphi 2009, à l'utilisateur final, le paramètre unique de la propriété DevelopmentCount n'est plus facultatif.

Ma question est, comment puis-je faire ce paramètre semble être en option avec Delphi 2009.

Répondre

3

Pour ajouter un paramètre par défaut (appelé paramètre optionnel dans VBA) dans une bibliothèque COM, vous devez définir le paramètre drapeau dans l'éditeur de bibliothèque de types. Cliquez sur la colonne du modificateur, puis sur le bouton du paramètre en question. Cochez la case a la valeur par défaut et placez une valeur par défaut dans la zone d'édition fournie.

Maintenant pour le problème. Dans Delphi 2009, il y a un bogue dans l'éditeur de bibliothèque de types, qui tente d'écrire la date dans le fichier ridl sous la forme d'une chaîne. L'éditeur devrait en fait convertir cela en entier. Cela ne compilera pas. Heureusement, le fichier ridl, est un fichier de chaîne, et peut être édité. Voilà donc ce que vous verrez dans le fichier RIDL

HRESULT _stdcall DevelopmentCount([in, defaultvalue(29/12/1899)] DATE); 

changement qui date à un nombre entier (note 30/12/1899 est 0)

HRESULT _stdcall DevelopmentCount([in, defaultvalue(-1)] DATE); 

Le dll va maintenant compiler, et valeur par défaut appliquée. Notez que si vous ouvrez la bibliothèque de types dans Delphi, elle remplacera l'entier par la chaîne de date, et vous ne pourrez pas encore compiler, vous devrez donc continuer à la modifier. Je ne sais pas si cela a été corrigé dans Delphi 2010.

Questions connexes