Net szemek Delphian
Borland Delphi 7
Az új fejlesztési rendszerre való áttérés kérdését figyelembe vevő programozók számára az egyik legfontosabb kérdés az, hogy hogyan lehet a régi rendszert használni az új rendszerben.
Szóval, mozgassa a Delphi kódot. Net segítségével a következő módszereket használhatja:
- használatban van. Nettó COM objektumok kifejlesztése a Delphi-ben;
- használatban van. Net DLL-ek. kifejlesztett Delphi;
A kód újraírása
Ez a módszer, annak ellenére, hogy egyértelmű, bizonyos esetekben a legkomplikáltabb, sőt egyszerűsíti a kapott kódot.
Az algoritmusok más nyelvekre történő átvitelének technikája sok programozó számára ismerős. Sőt, vannak olyan automatikus fordítók, mint Pas 2 C. Pascal, hogy a bemeneti kódot átalakítjuk C / C ++ - kód (persze, valami, amit kézzel kell szerkeszteni később, de az alapítvány kapunk egészen elfogadható).
Anélkül, hogy a kézi kódfordítás nyilvánvaló pillanataiban részletesen elmélkednének, szeretném emlékeztetni a következőket:
- mint a C # ott eljárások és függvények kívül az osztályok, a megvalósítása a globális alprogramok célszerű egy speciális (-ik) osztály (ok) statikus módszerek;
- mivel nincsenek globális változók a C #-ban, célszerű egy speciális osztály (oka) t használni statikus mezőkkel végrehajtásukhoz;
- hogy a Delphi rekordokkal egyenértékű konstrukciókat hajtson végre. Mindkét osztályt és struktúrát használhatja (struct) - a megoldás az átvitel során másolható adatok mennyiségétől függ, stb.
- mint a C # objektum törlődik automatikusan, meg kell alaposan vizsgálni a sorozat létrehozását és törlését a tárgyak, különösen akkor, ha a Delphi objektumok, a romboló végrehajtott kibocsátás források - az ilyen esetekben a legjobb megoldás bevezetése lenne a megfelelő módszerek vagy a „zárás”, vagy a végrehajtás IDisposable felületen.
Az alábbi táblázat az alapvető típusok megfeleltetését mutatja:
Használja be. Nettó COM objektumok kifejlesztése a Delphi-ben
Mivel az OLE szabvány egyértelműen meghatározza az adatcsere protokoll és adat formátumok nincsenek funkciók fejlesztése COM-objektumok Delphi nem (ráadásul, ami nem kívánatos használni módszer neve, amelyek egybeesnek az Object osztály módszereket C #: Egyenlő, GetHashCode, getType, ReferenceEquals, toString).
Ha a forráskódot például Delphi osztályokkészleteként hajtja végre. ez lehet írni Delphi nagyon egyszerű COM nevű objektumot (inproc - szerver), aki ellátja a funkcióját a homlokzat (lásd például tervezési minták www.dotsite.spb.ru.).
By the way, sok esetben a bevezetése a "homlokzat" lehetővé teszi még egyszerűbbé a rendszert oldalán a fő kódot.
Használja be. Net DLL-ek. kifejlesztett Delphi
mert A Delphi lehetővé teszi a dinamikus DLL-ek fejlesztését. akkor a meglévő Delphi kód "csomagolható" a könyvtárba. Ez a módszer arra kényszerít, hogy egy kicsit többet dolgozzon a C #-ban, mint a COM objektumok használata, bár bizonyos esetekben például a rendszer teljesítményét is felhasználhatja.
A C # -ből származó DLL-funkciók hívása jól ismert a dokumentációban. Net. A következő példa egy DLL használatáról. kifejlesztett Delphi.
DLL-fejlécek a Delphi-ban:
// Paraméter nélküli eljárás
Proc1 eljárás; stdcall;
// Eljárás az egész paraméterekkel
eljárás Proc2 (A, B: egész szám); stdcall;
// Eljárás valódi paraméterekkel
Proc3 eljárás (A, B: kettõs); stdcall;
// Eljárás logikai paraméterekkel
Proc4 eljárás (A, B: logikai); stdcall;
// Eljárás dátum / idő típus paraméterekkel
eljárás Proc5 (A, B: TDateTime); stdcall;
// Eljárás húrparaméterekkel
eljárás Proc6 (P1, P2: PChar); stdcall;
Figyeljen két pontra:
- használja a stdcall hívásmódosítót
- vonalak, mint paraméterek kerülnek PChar
Megfelelő adattípusok, lásd a táblázatot