Dll és a kód újrafelhasználásának és egyszerűsíti a szakadék

DLL és a kód újrafelhasználásának: Oszd meg és egyszerűsítése

Jeffrey Slarve

Sok évvel ezelőtt, amikor volt egy viszonylag új a Clarion for Windows (azt hiszem ez volt 1.0-s verzió), Olvastam egy esszét Dave Harms- és felosztása a kérelmet több DLL. Ez volt számomra a nagy ugrás a megértése, hogy miért szétválasztása a kérelem egy jó dolog, hiszen az elemi egyszerű ez, és hogyan kell gyorsítani a fejlesztési folyamatot. A DLL lehetővé teszi számomra, hogy működjön együtt a kis darabokat a projekt anélkül, hogy újrafordítani a teljes alkalmazás után minden kis változás / teszt, amit meg kell csinálni. Ez volt boldog a világ, és én boldogan éltek követően. Vége.

Nos, nem egészen a végéig. Ahogy telt az idő, írtam egy tervezetet a projekt (ebben az esetben azt jelenti, minden összetevője az alkalmazás), és észrevette, hogy azt kell megismételni ugyanazt a kódot minden egyes projektben. A legtöbb ilyen funkciók meglehetősen egyetemes és független a szótár. Így próbáltam, hogy egy közös DLL. ami nem kell egy szótár és más globális adat, de Application Generator gondolta, hogy okosabb, mint én (ami valójában az is lehet). AppGen csomag generál globális változók (GlobalRequest, GlobalResponse és t..p.) Mivel sem a helyi vagy külső. Ha a globális adatok a helyi, az azt jelenti, hogy az a hely számukra a DLL. sablonok generál .EXP fájlt, és tartalmazza azt a globális változók, ami párhuzamos nevek hibát, amikor az épület a projekt. Ha megpróbálom ezeket a globális adatok Külső. az én globális változót használni ezt a DLL, rendelkezésre állnak olyan projekt, amely ezt a megosztott DLL.

Eleinte megpróbáltam becsapni AppGen. A helyi változók, és módosítja EXP- fájlt, miután kódgenerálást, de nem volt túl nehéz. Különösen akkor, ha nem volt ABC globális osztály deklarációja.

De mi a baj! Én most fogok tenni. Egy másik lehetőség az, hogy egy DLL „kézzel”. Úgy tűnik, túl bonyolult, de emlékszem, hogy ez a kód nagyon ritkán módosítják, így a hatás, hogy meg kell tenni, csak egyszer, és ugyanabban az időben tanulni, hogy csináld. Ezen túlmenően, kapok egy csomó előnnyel jár, ha elhelyeztem a gyakran használt számos funkció egy külön DLL:

1. újrafelhasználása kódot. Többé nem kell átírni vagy import funkció hétNapja (). vagy funkciója fogadó modul egy dofladgey. Ez csak akkor szükséges, hogy csatlakoztassa a DLL a kérelmet, és kész.

2. Írja egyszer. és helyes egy helyen. Ha kell tennie bármilyen változás az általános funkciója, hogy meg lehet csinálni csak egy helyen. Gyakran előfordul, hogy az alkalmazás egy DLL nem is kell újrafordítani. Visszafordítás csak akkor szükséges a következő esetekben:

a) módosítja az egyik prototípus. Ha megváltoztatja a prototípus bármilyen DLL funkciókat. Az alkalmazás nem lesz képes megtalálni ezt az eljárást, ha nincs fordítanod.
  • b) Hozzáadott új eljárásokat. Rendszerint nem szükséges újrafordítani az alkalmazást, ha az új funkciót a DLL kerültek. Természetesen, ha a kívánt alkalmazást használni ezeket az új funkciókat, akkor azt újra kell fordítani.
  • c) Az új verzió a Clarion. Nem lehet normálisan használni a DLL. összeállításra kerül egy másik változata a Clarion. Természetesen meg tudod csinálni, de speciális tudást vagy eszközöket. Sokkal jobb, hogy újra kell fordítani.

  • 3) Easy támogatást. Amikor a DLL készül egyszerre, így nagyon könnyű megváltoztatni. Ez sokkal egyszerűbb, mint próbál változtatni, hogy ugyanazt a funkciót hétNapja () a 20. és helyeken.

    4) Coolness. DLL- nagyon cool. Valójában - nagyon-nagyon jó.


    Kézi létrehozása DLL

    Van néhány dolog, amit meg kell tennie, hogy manuálisan létrehozni a DLL. Némelyikük nem tűnik ismernie, hogy azok, akik még nem tapasztalták ezt a szempontot a program, de valójában nem bonyolult, ha meg fogja érteni. Itt vannak a lépések:

    1. Hozzon létre egy könyvtárat
    2. Hozzon létre egy fájlt PRJ-
    3. Készítsen egy fájl (ok) a forrás szöveg
    4. Hozzon létre egy fájlt EXP-
    5. Fordítsd le a DLL
    6. Legyen elérhető prototípusai DLL eljárások
    7. Készítsünk DLL összes alkalmazás számára elérhető
    8. A DLL

    Az első lépés, hogy hozzon létre egy könyvtárat bárhol Clarion projektek könyvtárszerkezetet. Ez egy jó ötlet -, hogy tartsa egy helyen minden összetevőjét.

    Készítsen PRJ- fájl

    PRJ - fájl vagy projekt - egy apuka (vagy ha azt szeretnénk, anya) bashey DLL. Mindössze annyit kell tudni, hogy mi van a DLL. beleértve a fájlokat, a járművezetők, a külső könyvtárak, ikonokat (ikonok). és a forráskód. Anélkül, hogy a projekt nem tudom, mit kell tenni. Talán halászat vagy gitározni.

    Készítsen PRJ- fájl nagyon könnyen Clarion IDE:

    a) Kattintson a Fájl | Új és válassza Project
    b) A megjelenő párbeszédpanelen adja meg a fájlnevet az új projekt. Ez lehet, hogy nem esik egybe a DLL nevét. Nyomja mentése.
    c) Meg kell teremteni megjelenik egy ablak, a New Project fájl. Ebben az ablakban a következőket teheti:
    i. Írja be a nevét a projekthez. Ez a mező nem kötelező.
    ii. Fő File - a név a fő CLW- a projekt fájlt. Csak adja meg nevét, majd kattintson ide lavishu Tab .Ez nem kell a nevét egy meglévő fájlt.
    iii. Cél fájl valószínűleg ugyanaz, mint a fő fájl. kivéve a kiterjesztés EXE. Ez meg fogja változtatni a DLL. megváltoztatása után a Target Type DLL. Kattintson az OK gombra.
    d) Ön most létrehozott egy projektet. Ha ez az első projekt, gratulálok.

    Lehet, hogy észrevette, hogy van egy másik neve Cél Type Library. A könyvtárak nagyon hasonlít a DLL. de vannak előnyei és hátrányai, összehasonlítva a DLL. Én szívesebben használják a DLL az a tény, hogy azok könnyebben kezelhetők, és kevésbé valószínű, hogy szükséges a teljes újrafordítani az egész alkalmazást. Ha bármilyen változást a LIB. akkor újra kell fordítanod (legalább átszerkeszthesse) minden használó alkalmazások a LIB. DLL Az egyetlen hátránya az, hogy egy újabb fájlt az alkalmazás. Általában azonban ez előnyt jelent, hiszen a változás DLL, akkor meg kell küldeni csak egy fájl.

    Hozzon létre egy fájl (ok) a forrás szöveg

    Ez egy olyan hely, ahol nem lesz a függvény / eljárás. Az E cikk alkalmazásában, azt használja egyik funkciója az én ClarionFAQ.com oldalon. Ez a funkció használható mozgatni az ablakot Parental Control (Group, az Opció és így tovább), valamint az ő „gyermeke” ellenőrzéseket. Ha valaha is megpróbálta mozgatni a kontroll futás közben. akkor tudja, hogy a gyermek kontroll sincs, hol a szülő mozog.

    A következők a minimum, amit meg kell tenni a készülék és hasonló kódot az DLL, hogy azt össze.

    a) Az üzemeltető vagy tagként. Bár a DLL nem program, de szükségük van a fordító egyébként. Ha az üzemeltető TAG. majd győződjön meg arról, hogy nem lehet paramétere. Azt kell az első sorban bárhol az első oszlopban.
    b) MAP nyilatkozatot. Itt tegye a függvény prototípusokat, hogy használja és az export a DLL.

    térkép
    JSMoveParentControl (Long pParentFEQ, Long pXShift, Long pYShift, Byte pMoveType = 0)
    vég

    a) kód részben. Itt kódot írni. Lásd a csatolt fájlt mydll.clw, mivel ez lesz az összes együtt.

    Hozzon létre egy fájlt EXP-

    EXP fájl vagy az export és a modul definíciós fájl tájékoztatni a projekt, amely a változók és függvények kell exportálni más alkalmazások használata a DLL. Néhány funkció csak akkor használható más funkciója a DLL. és akkor nem kell exportálni. EXP lehet nagyon egyszerű vagy bonyolult, de minden esetben ez csak egy szöveges fájlt. Segítségével Clarion 6 tartalmaz egy csomó információt a EXP- fájlokat, de talán nehéz megtalálni. Csak nézd .EXP majd látni Moduldefiníció fájlok.

    Itt a mi kis fájl EXP- DLL:

    NÉV 'MYDLL' GUI
    KIVITEL
    JSMOVEPARENTCONTROL @ FlllUc @?
    Gondoskodjunk róla, hogy a végén egy üres stringet!

    Megjegyzés: a húr JSMOVEPARENTCONTROL @ FlllUc. Látod, hogy ez nem olyan, mint az eredeti prototípus JSMoveParentControl () függvényt. Lehet kérdezni, hogy miért. Nem tudom. És nem hiszem, hogy bárki tudja. Egyszerűen működik. Ezt nevezik a nevek szétszedése. Ez lehetővé teszi, hogy túlterheli eljárások neveket. Név szétszedése ki lehet kapcsolni, ha használja a Név mezőben () eljárást, és ez jól működik a legtöbb esetben, de nem túl nehéz csinálni egyedül szétszedése. Szerencsére, a Clarion- th mellékelt mintaprogram (% CWROOT% \ Példák \ Src \ Pro2exp) erre a célra. Csak lefordítani a programot, írja be a prototípust a szövegmezőbe, és nyomja TAB. Pro2exp mutassa megcsonkított prototípus.

    Megjegyzés: Ügyeljen arra, hogy a javaslat egy üres sor, miután az utolsó sort a fájl EXP-. Ez nagyon fontos, és én órákon át rajta, amikor ezt írta a cikket. Mielőtt hozzáadásra ebben IDE (C5.5) „esik” sort, és nem az én exportált DLL függvény a végső összeszerelés.

    Rendben van. A gombra kattintva a villám, és hagyjuk, hogy fellángolnak. Szerencsére, ahogy én tettem, az első alkalommal, hogy mindent össze hiba nélkül. Haha. Rendben van. végül össze. És ez. A sikeres összeállítás DLL projekt. kapsz DLL- és LIB- fájlokat. LIB- fájl a „ragasztó”, hogy csatlakoztassa a DLL az alkalmazás. Letette a kérelmet a projekt, amely használja a DLL-t. Ha csatolja a DLL a kérelem ilyen módon meg kell tenni a DLL olyan helyen, ahol képes lesz megtalálni az alkalmazást. (Lásd még a három cikket Larry Sand) betöltendő DLL futásidőben.

    Legyen elérhető prototípusai DLL eljárások

    Én általában létre include- fájlt fel kell venni az alkalmazás, így a kérelem nem kell semmit, hogy vezessenek be nekem, hogy a funkció elérhető. Csak másolja a MAP részén egy külön fájlba. Most.


    Készíts egy DLL összes alkalmazás számára elérhető

    Nos, most van egy DLL és akkor valószínűleg fog használni. Azt feltételezzük, hogy van egy extra képzelet és írhat egy minta, amely összeköti a DLL a kérelmet. De ez olyan könnyű megtenni, hogy nem közlik, mert ezt a sablont. Ez minden, amit tennie kell:

    1. Nyissa meg az App. ahol szeretne hozzáadni egy DLL
    2. Kattintson a modul lapra
    3. Kattintson az alkalmazás menüben, majd válassza a Beszúrás modult. Jelenik Select Module Type ablakban.
    4. Válassza ebben az ablakban külső DLL
    5. A Név mezőbe írja be a nevét a DLL kiterjesztésű LIB
    6. Térkép Include File mezőbe írja be a nevét a fájl include-

    Megjegyzés: Ha a include- fájlt. DLL eljárások, amelyek nem automatikusan látható AppGen. ugyanakkor használhatja őket embed- ah. T ő kiábrándító, ha nem tud róla. Ha meg kell tenni az eljárásokat látható AppGen. kell őket manuálisan, mint a külső (vagy export más App) használata helyett a inc- felhúzó. Válassza ki a DLL modul. Beszúrás gombra, vagy válassza ki eljárási | Új és hozzon létre egy eljárást a jobb prototípus. Az is előfordulhat, hogy egy jelzést állapítsa globálisan az eljárás leírását.

    Carl istálló írta hasznosságelméletre sablont használó LINKNAME () függvény a Clarion sablon nyelvet. CBMangle.zip fájl tartalmazza a sablont, és példákat bemeneti és kimeneti fájlokat. Az előnye, hogy ezzel a sablonnal alkotnak EXP- fájl, amely LINKNAME () függvény a helyes logika feldolgozásra innovációk a nyelvet. Köszönöm Carl.