Vraag & Antwoord

Programmeren

[VB6] DLL maken

9 antwoorden
  • Ey, Ik heb een functie die ik vaak gebruik in mijn programma's. Ik 'stop' nu elke keer de losse module in mijn project, maar kan ik de functies die ik wil gebruiken ook in een dll zetten? En hoe roep ik deze dan aan?
  • Project maken in ActiveX dll en dan opslaan Nieuw project, in het menu project references en dan zoeken naar jouw dll. Een variabele toekennen aan de class in jouw dll en via die variabele de functies aanroepen. Als dit als bizar klinkt hoor ik het wel, dan leg ik het wat langzamer uit :D :D :D
  • Eerste deel begrijp ik wel. Dus gewoon mijn functie(s) in een ActiveX dll stoppen die compilen. Alleen laatste begrijp ik niet. Gebruik al andere bestaande dll en die roep ik gewoon aan met: [code:1:0e36905fba]Public Declare Function 'FunctieNaam' Lib "path_to_dlll" (ByVal 'variabele' As 'type')[/code:1:0e36905fba] Hoef hier dus niets te doen met references. Wat is het verschil? En kan ik diezelfde code ook gebruiken? GRTZ, René
  • Denk het wel, ik gebruik altijd de reference methode maar dit lijkt me ook wel te doen. Beste kun je het gewoon proberen, dat is de beste leermeester.
  • tis nog niet helemaal gelukt. Doe het volgende als test: msg.dll: [code:1:ec50152089] Function Message (msg as string, title as string) as integer Message = msgbox(msg, vbYesNoCancel, title) End Function[/code:1:ec50152089] Voeg 'm nu toe met reference. Form1: [code:1:ec50152089] Private Sub Form_Load() test = Message("Message","Title") debug.print test End Sub [/code:1:ec50152089] Krijg vervolgens de melding dat de functie niet gedefineerd is. Wat doe ik fout?
  • Als je een ActiveX dll maakt moet je een klasse aanmaken. Wanneer je nu de dll als reference gebruikt zul je een variabele aan moeten maken die refereert naar de klasse in jouw dll. laten we aannemen dat je de klasse messageclass hebt genoemd. [code:1:a3190c42fe]private sub somesub() dim iets as messageclass test = iets.message(bla, bla) end sub[/code:1:a3190c42fe] helpt dit? Ik heb een klein dll bestand gemaakt en een gewoon bestand dat gebruikt maakt van het dll bestand. Je kunt het vinden op [url=http://www.nl-soft.nl/Erpics/dll.zip]deze site [/url] Het blijft er niet lang op staan, volgende week haal ik het weer weg. ps Wat jij fout deed is om de functie in jouw dll niet Public te maken. Standaard zijn alle functies, subs en variabelen private en dus niet zichtbaar voor de buitenwereld.
  • Misschien ben ik een zeikerd, maar overweeg om dat soort kleine functies gewoon in een (class) module te stoppen. Een DLL is op zich wel grappig, maar heeft het een echte meerwaarde? Ik heb een aantal (class) modules die ik regelmatig gebruik en die voeg ik gewoon toe aan mijn project. Als jij een DLL update die in de References van je applicatie staat, dan gebeurt het regelmatig dat je applicatie niet meer wilt starten. Daarnaast kost het veel meer processorkracht / geheugen om een DLL te laden en vervolgens een functie te laden. Als je je programma knap schrijft en forms, recordsets en andere veelgebruikte objecten na gebruik gewoon killt met Set myObject = Nothing dan heb je echt veel meer performance dan met zo'n DLL. Bovendien scheelt het een hoop rommel in je SYSTEM(32) directory. Natuurlijk is het leuk om eens te proberen een DLL te maken, maar ik raad je aan om ze zoveel mogelijk te mijden.
  • dit is de complete code voor wat je wilt: Start VB6 -> Active X Dll , en voer de code in: bijv: sub msgcritical() msgbox "TEXT", vbCritical, "TITLE" end sub sub msginformation() msgbox "TEXT", vbInformation, "TITLE" end sub compile en noem het msg.dll start VB6 -> Standard EXE -> Reference -> zoek je dll op. ga dan naar de code editor en type bij General: static message as new msg en dan bij sub form_load() msg.msgcritical of msg.msginformation end sub Klaar is kees
  • [quote:eed4a17071="RubeL"]Een DLL is op zich wel grappig, maar heeft het een echte meerwaarde? Ik heb een aantal (class) modules die ik regelmatig gebruik en die voeg ik gewoon toe aan mijn project. Als jij een DLL update die in de References van je applicatie staat, dan gebeurt het regelmatig dat je applicatie niet meer wilt starten.[/quote:eed4a17071] blame M$. [quote:eed4a17071="RubeL"] Daarnaast kost het veel meer processorkracht / geheugen om een DLL te laden en vervolgens een functie te laden. Als je je programma knap schrijft en forms, recordsets en andere veelgebruikte objecten na gebruik gewoon killt met Set myObject = Nothing dan heb je echt veel meer performance dan met zo'n DLL. [/quote:eed4a17071] Dat valt op zich best mee. [quote:eed4a17071="RubeL"] Bovendien scheelt het een hoop rommel in je SYSTEM(32) directory. Natuurlijk is het leuk om eens te proberen een DLL te maken, maar ik raad je aan om ze zoveel mogelijk te mijden.[/quote:eed4a17071] Je hebt ActiveX DLL's en gewone DLL's. ActiveX DLL's dien je in de system32 directory plaatsen, registreren en meer van die onzin. (natuurlijk heeft het ook zijn voordelen). Bij [i:eed4a17071]gewone[/i:eed4a17071] DLL's, kun je deze gewoon in dezelfde directory plaatsen als je executable en de functies gebruiken die in de DLL's zitten zonder voorafgaande handelingen. Bij een eventuele update van een functie in de .DLL dan hoef je alleen de .DLL te vervangen. En dit is waarschijnlijk wat de vraagsteller bedoelt. Blijft de vraag staan: Hoe kun je in Visual Basic standaard DLL's maken?

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.