
A mellékelt példa használata előtt el kell végeznünk bizonyos beállításokat. Ezek megismeréséhez olvassa el a cikk Bevezetés című szakaszát.
Bevezetés
A .NET-es projekt fordításakor a CSharpCOM komponens COM objektumként regisztrálásra kerül a Windows rendszerben, vagyis elérhető a COMClient projektből. Most már csak azt kell elérnünk, hogy a Delphi-s projektben meghívhassuk a komponens metódusait. Ehhez a fejlesztőkörnyezetből importálnunk kell a COM komponens típuskönyvtárát.
A Projekt – Import Type Library menüpont kiválasztása után megjelenő panelen keressük meg a CSharpCOM (Version 1.0) elemet, majd installáljuk azt. Ezt követően az /Delphi(verziószám)/Imports mappában található lesz egy CSharpCOM_TLB.pas állomány.
Másik lehetőség – melynek használatakor a COM komponens projektjét sem szükséges fordítanunk –, ha a COMClient mappában mellékelt CShapCOM.tlb állományt adjuk hozzá a Delphi-ből elérhető komponensek listájához, és ezt követően választjuk ki. Ekkor nincs más teendőnk, mint a fent említett panelen az Add nyomógombra kattintani, és a felbukkanó dialógusablak segítségével, a meghajtón megkeresni az állományt.
A COM komponens elkészítése
A COM komponens 5 darab metódussal rendelkezik, melyek példát mutatnak az alaptípusok paraméterként való átadására. A komponens osztálya a COMClass nevet viseli.
Az első metódus tulajdonképpen általános felhasználású, segítségével a paraméter object típusúként kezelhető, és a visszatérési érték is object típusú.
public object GetObject(object o)
{
return "A megadott érték: " + o;
}
A Getint64 és a Getint32 nevű metódusok alkalmasak a nevükben szereplő Delphi típusok feldolgozására. A GetDouble metódussal a paraméterként kapott lebegőpontos számokat tudjuk kezelni. A visszatérési érték itt object.
A ModifyObject metódus nem ad vissza értéket, azonban a paraméterként kapott objektum referencia típusú paraméterként kerül feldolgozásra, vagyis a metódus magjában értéke megváltozik.
public void ModifyObject(ref object o)
{
string s = o.ToString().ToLower();
o = s;
}
Delphi-s kliens megvalósítása
A COM komponensekkel való munkához be kell szerkesztenünk a ComObj, és az ActiveX nevű unit-okat a projektbe. A COM komponenst egy OleVariant típusú objektumon keresztül érhetjük el. Ezt privát láthatósággal deklaráljuk.
Az objektumot a FormCreate metódusban példányosítjuk. Amennyiben a komponens még nincs telepítve, az alkalmazást nem tudjuk futtatni.
sharp := CreateOleObject('CSharpCOM.COMClass');
A kliensalkalmazás Form-jának 5 szegmensén – a különböző típusok átadását demonstrálandó – a COM komponens különböző metódusait hívhatjuk meg.
Az „Egész számok átadása” szegmensben a lista valamely elemének kiválasztása után egy adott értékkel meghívjuk a GetInt32 metódust, majd a visszatérési értéket megjelenítjük a szövegmezőben.
Edit1.Text := sharp.GetInt32(si);
...
Az „Int64 típus átadása” szegmensben egy Int64 típusnak megfelelő számot adunk át karakterláncként (mivel a komponens egyetlen metódusa sem hívható ezzel a paramétertípussal), majd a kapott eredményt (az értékét 100-al csökkentjük) megjelenítjük a szövegmezőben.
Edit2.Text := sharp.GetInt64('9223372036854775807');
A „Paraméter módosítása” szegmensben a ModifyObject COM metódust hívjuk meg, mely a paraméter karakterláncot kisbetűssé alakítja.
s := Edit3.Text;
sharp.ModifyObject(s);
Edit4.Text := s;
A „Lebegőpontos számok átadása” szegmensben a GetDouble metódust próbálhatjuk ki. Ekkor a 4.5 értékhez adunk a metódusban 100.5-öt.
r := 4.5;
Edit6.Text := sharp.GetDouble(r);
A „Paraméter átadása objektumként” felirat alatt a GetObject metódusnak adhatunk át egy tetszőleges paramétert.
A COM komponens metódusai nem kaphatnak összetett típusú objektumokat, ezek átadására más módszereket kell választanunk.