michaenh Skrevet 5. desember 2003 Del Skrevet 5. desember 2003 Hei. Format71 er du der.. Nå har jeg gått over fra statiske dll kall til dynamiske plugins. Men når jeg prøver å frigjøre dll'en med FreeLibrary(Handle) etter at jeg har brukt funksjonen.. så tryner programmet med Access Violition, etc Her er min prosedyre: procedure Test; var i: integer; Module: THandle; msg: TPlugProc; begin i:=0; with PlugList do while i<Items.Count do begin Module:=SafeLoadLibrary(PChar(plugInsDir+Items[i])); try @msg:=GetProcAddress(Module,'Melding'); if @msg<>nil then msg; finally if Module<>0 then FreeLibrary(Module); end; i:=i+1; end; end; Dette er når jeg har med sharemem eller fastsharemem.. Men derimot hvis jeg utelater sharemem i dll'ene så fungere det.. Har du noe anelse hvorfor? Bør jeg ikke ha med sharemem?? Takk på forhånd! Du er best michael Lenke til kommentar
michaenh Skrevet 5. desember 2003 Forfatter Del Skrevet 5. desember 2003 Hei igjen. Jeg hadde litt feil istad.. det fungerte med FastSharemem, men ikke Sharemem. Fungere iallefall.. litt bra.. fordi jeg har brukt fastSharemem på mine dll'er.. Lenke til kommentar
kilogram Skrevet 5. desember 2003 Del Skrevet 5. desember 2003 Der har du problemet. Dersom du bruker ein "memory manager" som ShareMem, bør du sørge for at det er samme versjon av den du bruker. Difor vil det ikkje gå spesielt bra dersom du bruker ShareMem i den eine, og FastShareMem i den andre. Egentlig bør du prøve å halde deg unna bruk av desse i det heile, så kan dei som programmerer i andre språk òg bruke dine DLL-filer. Lenke til kommentar
Format71 Skrevet 6. desember 2003 Del Skrevet 6. desember 2003 Jo, da. Jeg er her, men må inrømme at dette er et punkt jeg har slitt litt med uten å ha funnet noe godt svar på problemet. Kilogram kommer med et godt råd: Hold deg unna... ShareMem er nødvendig når at du ønsker å allokere minne i en modul og frigjøre det i en annen eller utveksle longstrings (ansistrings) eller dynamiske arrays mellom modulene. Dersom du sørger for å holde deg unna det skulle ting gå bra uten ShareMem. Det kan jo være flere alternativer her, men det mest opplagte er jo å allokere og frigjøre minne i samme modul samt å holde seg unna ansistrings og dynamiske arrays i grensesnittet mellom modulene. Selv bruker vi ofte interface's og widestrings for å snakke på tvers av moduler og det ser ut til å gå bra. Lykke til, -Vegar Lenke til kommentar
michaenh Skrevet 6. desember 2003 Forfatter Del Skrevet 6. desember 2003 Hei hei.. Takk takk folkens.. Kilogram: Der har du problemet. Dersom du bruker ein "memory manager" som ShareMem, bør du sørge for at det er samme versjon av den du bruker. Difor vil det ikkje gå spesielt bra dersom du bruker ShareMem i den eine, og FastShareMem i den andre. Det er feil fordi jeg hadde brukt Sharemem gjennom hele løpet på et lite test projekt. Jeg brukte ikke den ene og den andre.. Deretter gikk jeg over FastSharemem på hele prosjektet da fungerte det. Format71: ShareMem er nødvendig når at du ønsker å allokere minne i en modul og frigjøre det i en annen eller utveksle longstrings (ansistrings) eller dynamiske arrays mellom modulene. Det trenger jeg.. sender stadig objekter mellom modulene.. Format71: Selv bruker vi ofte interface's og widestrings for å snakke på tvers av moduler og det ser ut til å gå bra. Har du et lite eks.? takk.. Ellers så skal jeg se på det.. Flott! Format71 og Kilogram.. Mange takk! mvh. mha Lenke til kommentar
Format71 Skrevet 7. desember 2003 Del Skrevet 7. desember 2003 En ting er å sende objekter mellom modulene, men oppretter du dem i en modul og frigjør dem i en annen? Er også usikker på om oppretting av objekter bruker new eller getmem. (orker ikke sjekke så tidlig på morgenen...) Har dessverre ikke noe lite eksempel på bruk av interface og widestring, men det skulle være rimelig greit å gjennomføre. Lag det et interface som tilsvarer eksport-rutinene du har i dag. Lag deg så en klasse som implementerer dette interfacet. Lag en eksportfunksjon for å hente peker tli interfacet. Det du må passe på er å overstyre addRef og release slik at klassen ikke frigjøres automatisk i hytt og gevær... Det er også greit å merke seg at det er ingen grunn til å implementere fullverdige com-objekter selv om man bruker interface. -Vegar Lenke til kommentar
michaenh Skrevet 7. desember 2003 Forfatter Del Skrevet 7. desember 2003 Takk.. Jeg skal se på det etterhvert.. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå