15. december 2003 - 06:16Der er
26 kommentarer og 1 løsning
Vedrørende DLL
Er det virklig kun procedurer og funktioner jeg kan hente fra en DLL? Hvad med klasser, records og andre typer? Jeg læste i Delphi's hjælpefil at man ikke kan hente globale varianter fra en DLL, men betyder det også typer og konstanter?
Ja - du kan ikke direkte hente typer fra en dll. Dertil kommer varianter af dll-filen som fx Borland's bpl-filer; de kan indeholde alt det du kender fra units - dvs. procedurer/funktioner, typer, herunder klasser og variable.
Men det kan jo selvfølgelig 'omgås' en smule. Hvis du vil have en række konstanter liggende i en dll-fil, så kan du jo bare tilføje en funktion ReadConstant(ConstantID: Integer): Pointer; og eksportere denne fra dll'en. Records er jo blot en angivning af / strukturering af data.. og fylder som sådan ikke noget i din kode ved deklarationen. Det gør derfor ingen forskel hvor en record er deklareret, men hvis det er nødvendigt, at dll-filen skal fungere som plugin og dermed have magt til at ændre i en record's struktur, kan du lave nogle funktioner som fx:
Men så igen har Microsoft jo udviklet COM-teknologien hvormed du faktisk har objektorienteret adgang til en dll-fil (dvs. klasser) ! *Plus* at man kan have typer som fx enumerations, records/structs osv..
Ja, det er faktisk en slags plugin system, jeg godt kunne tænke mig at lave. Men det skal være en måde, som også er kompatibel med andre sprog (C++) og det DLL jo. Jeg ved ikke om COM er det, faktisk ved jeg ikke så meget om COM over hovedet!!!!
Altså et COMobjekt ligger i en dll! Men COM er langsommere end dll'er, men det kan sagtens omgås. Det kan fortælles at Internet Explorer og de forskellige Windows Scripting sprog (VBScript og JScript) også bygger på COM (Component Object Model)
Jamen det ser jo meget fornuftigt ud det hele... :)) Jeg forstår bare ikke din SamplePlugin_TLB unit. Hvordan finder du ud af TGUID (De lange nummere) er det noget du bare opdigter eller har det en logisk forklaring? Og hvad betyder de?
Det laver Delphi (som benytter windows api'et) for mig. Det står for Global Unique IDentifier, kernen i Windows' registrering af klasser. I delphi kan du bede den om at lave dig en ny GUID ved at trykke Ctrl+Shift+G
najj takk :D øhh du skal ikke tage dig af de 3 compiler directives, dem laver delphi selv for at kunne kompilere skidtet. hele det unit bliver genereret automatisk. prøv at trykke f12 når du er i det unit så ser du der hvor det hele sker. type library editoren.
prøv iøvrigt at lege med "ActiveX"-fanebladet hvis du går op i Delphi->File->New...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.