J'ai importé une bibliothèque de classes .Net mise à disposition via COM Interop dans Delphi 2007, et un type de données Decimal a été mis à disposition sous la forme d'un enregistrement condensé tagDEC. Comment remplir ce type d'enregistrement pour pouvoir utiliser la bibliothèque de classes?
TKSComment utiliser tagDEC dans Delphi
Modifier
Ci-dessous mon code C# qui est exposé comme un ActiveX via COM Interop:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ProgId("ClassLibrary.Class1")]
public class Class1
{
[ComVisible(true)]
public string Method1(DateTime pDateTime, int pID, decimal pQty)
{
...........
}
}
I inscrire la bibliothèque regasm sur le PC avec Delphi, le commande ci-dessous:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe .\ClassLibrary.dll /tlb:ClassLibrary.tlb
En Delphi 2007, via le composant d'importation , J'importer la bibliothèque de types, et obtenir reconverti dans la méthode suivante à la classe proxy:
function Method1(pDateTime: TDateTime; pID: Integer; pQty: TDecimal): WideString;
Le TDecimal
est en fait un packed record
de type tagDEC
, trouvé dans l'unité ActiveX
. Ci-dessous est sa syntaxe:
{ from WTYPES.H }
PDecimal = ^TDecimal;
{$EXTERNALSYM tagDEC}
tagDEC = packed record
wReserved: Word;
case Integer of
0: (scale, sign: Byte; Hi32: Longint;
case Integer of
0: (Lo32, Mid32: Longint);
1: (Lo64: LONGLONG));
1: (signscale: Word);
end;
TDecimal = tagDEC;
{$EXTERNALSYM DECIMAL}
DECIMAL = TDecimal;
Ma question est de savoir comment je remplir ce, donc je peux passer la valeur décimale dans la méthode de classe .Net Library? Y a-t-il une fonction d'aide? Je n'en ai trouvé aucun.
Encore une fois!
Il est quelque peu difficile de répondre à cette question pour le moment. Pourriez-vous s'il vous plaît fournir plus de détails. –
Quelle est la structure de l'enregistrement groupé tagDEC? d'où ça vient ... RTL? – jachguate
Juste édité le poste avec tous les détails, C# et Delphi. Tks tant que – Pascal