DLL som komponenter?

Tags:    c++

Hejsa...

Jeg er så småt begyndt at kode igen efter et par års pause (dårligt arbejdsmiljø ødelagde min kode-glæde).
Jeg er gået i gang med et program som jeg gerne vil ha' delt op i komponenter som folk så kan tilføje hvis de får brug for dem.
Jeg har læst lidt om dll'er herinde men har lige et par spørgsmål:

1) Jeg skal bruge forskellige måde hvorpå folk kan sende en besked (vis sms/mail/html). Er det muligt at lægge hver af de 3 metoder ud i hvert sit dll og så i hovedprogrammet bare kalde metoderne det samme? (en person vil kun ha' et dll af gangen).

2) Jeg ville også gerne lave et dll-med nogle print-muligheder. Er det muligt? Og er det muligt for hovedprogrammet at deteketere om man har print-dll'et så det slet ikke fremgår af menu'en (i hovedprogrammet) eller muligvis bare er grået ud.

Jeg har kigget lidt på http://damb.dk/dllfiles.php men jeg arbejder i Borland C++ Builder 6 så er det nogen der har et test project eller andet kode til at komme i gang på da jeg aldrig før har beskæftiget mig med dll'er.

På forhånd tak for hjælpen
Jesper



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato

1) Jeg skal bruge forskellige måde hvorpå folk kan sende en besked (vis sms/mail/html). Er det muligt at lægge hver af de 3 metoder ud i hvert sit dll og så i hovedprogrammet bare kalde metoderne det samme? (en person vil kun ha' et dll af gangen).

Du kan sagtens gøre så du laver et program der tager udgangspunkt i en funktion, f.eks. method(). Du laver derpå 3 DLL'er med samme funktions navn - og samme navn. Så kan du i en "pakke" med din application samt DLL'en, enten være et program med en DLL hvori den ene metode af sms/mail ligger i, osv. osv.


2) Jeg ville også gerne lave et dll-med nogle print-muligheder. Er det muligt? Og er det muligt for hovedprogrammet at deteketere om man har print-dll'et så det slet ikke fremgår af menu'en (i hovedprogrammet) eller muligvis bare er grået ud.

Der findes forskellige måder at tjekke hvis en fil, eller i dette tilfælde bare en fil med suffikset .dll eksisterer. Så dette skulle ikke være noget problem.

Du kan prøve dette program med 2 DLL-filer, samme navn men med forskellige "metoder" i funktionen "method".
Fold kodeboks ind/udKode 

Fold kodeboks ind/udKode 

Fold kodeboks ind/udKode 

Grunden til at filerne skal hedde det samme er så main-programmet, app.cpp, kan finde dem. Det samme gælder funktionsnavn. Man kunne også vælge at gøre så den tjekker for forskellige filer, men dette er et eksempel.

Hvis du vil have at folk selv skal kunne lave sine egne DLL-filer til programmet kan du vælge at bruge en model til at gøre det. Jeg foretrækker personligt COM (Component Object Model), da det kan bruges i mange sprog, så man ikke nødvendigvis skal lave det C++.

Held og lykke med det hele!



Mange tak for svaret Void!

Nu bruger jeg som sagt C++ Builderen da jeg ikke er så meget til at programmere gui'en selv. Kan jeg stadig bruge denne kode (copy/paste) eller skal den se meget anderledes ud?.

Mht. det første punkt gør det ikke så meget at jeg blive nødt til at lave 3 forskellige fil-navne og så en if/else da jeg alt afhængig af metode skal have forskellige parametre (lige umiddelbart, designet er ikke helt på plads).

Det har sat nogle tanker i gang men jeg vender nok frygteligt tilbage de næste 2 måneder, kan godt mærke det er lidt "hårdt" at komme i gang igen :$

Hygge
Jesper



Hmmm... hvordan pokker giver jeg point'ene?




Nu bruger jeg som sagt C++ Builderen da jeg ikke er så meget til at programmere gui'en selv. Kan jeg stadig bruge denne kode (copy/paste) eller skal den se meget anderledes ud?.

Jeg har aldrig prøvet RAD, så ved ikke hvordan ens kode ser ud. Men umiddelbart tror jeg ikke det gør nogen forskel. Prøv at lave dit GUI, imens du langsomt modficerer min kode.


Det har sat nogle tanker i gang men jeg vender nok frygteligt tilbage de næste 2 måneder, kan godt mærke det er lidt "hårdt" at komme i gang igen

Hehe. Held og lykke med det! :-)


Hmmm... hvordan pokker giver jeg point'ene?

Ved det ærligt talt ikke. Det haster ikke med at få de points, så hvis du engang finder ud af det så kan du gøre det.



t