Avatar billede akilleuz Nybegynder
26. maj 2011 - 20:32 Der er 8 kommentarer

DLL funktioner og memory

Hej,

Jeg har et simuleringsvæktøj der kan kalde en DLL fil med en given clock. Inde i DLL filen er der angivet nogle funktioner som kan kaldes fra simuleringes værktøjet.

Jeg er godt med på hvordan DLL filen skal sættes op og har også lavet nogle små programmer, som kan addere, multiplicere osv.

Det jeg har problemer med er hvordan man kan lave en form for hukommelse således at værdierne fra DLL funktionen bliver gemt til næste gang den bliver loadet.

Findes der nogle bøger der forklare noget om dette, eller hvor vil i anbefale jeg skal starte? DLL filen laves i C++.

Med venlig hilsen

Thomas
Avatar billede bertelbrander Novice
26. maj 2011 - 21:30 #1
Der er vel mindst 2 måder at gøre det på. Du kan gemme data i windows registry, se f.eks:
http://damb.dk/registry.php
Det er mest hvis du har forholdsvist få data, som brugeren ikke skal kunne rode med.

Alternativt kan du gemme data i en fil, evt. en flad txt-fil, en xml-fil, eller i avancerede tilfælde i en database.
Avatar billede akilleuz Nybegynder
26. maj 2011 - 21:37 #2
Jeg havde overvejet en for for txt fil, men så skal den helst krypteres, database vil være for meget.

Det jeg håber på er kun at have en DLL fil og evt nogle tilhørende filer.

Hvis jeg germmer data i WinReg, vil de data så ikke ligge der "fast" eller hvordan sørger man for at de bliver slettet næstegang PC'en bliver slukket.


Er det muligt at lave et program der kører som en service eller lign. som DLL'en gemmer data i? Det vil så medføre at man starter og stopper denne service inden man bruger simulerings værktøjet?
Avatar billede bertelbrander Novice
26. maj 2011 - 21:47 #3
Det er rimelig enkelt at kryptere data i en tekstfil, medmindre det er superhemmelige data.

Data i Windows registreringsdatabase ligger der fast, indtil du eller en anden sletter dem, det samme for filer.

Jeg tror umiddelbart at det er for bøvlet at bruge en service til at gemme data.
Avatar billede akilleuz Nybegynder
26. maj 2011 - 21:54 #4
Okay, så vil jeg nok prøve med en tekst fil. Sådan en kan man vel lave som man normalt gør i c++?

Kan man ikke lave nogle arrays  i DLL'en som indeholder de data man vil gemmen. For eksempel hvis jeg ved jeg skal gemme 10 værdier kan man så definere en form for globalt array [10] hvor data'erne ligger i? Så man slipper for txt filere?

Jeg ved nemlig altid størrelsen på de "memory blokke" der skal laves.
Avatar billede bertelbrander Novice
26. maj 2011 - 22:47 #5
Jeg tror at du bliver nødt til at forklare lidt mere præcist hvad du vil lave. Du kan godt gemme ting i et globalt array i DLL'en, men når DLL'en unloader forsvinder de.

Der er ikke forskel på at læse filer fra DLL'er og fra andre programmer.
Avatar billede akilleuz Nybegynder
31. maj 2011 - 21:39 #6
Nu har jeg gået og tænkt lidt over dit sidste indlæg, og fundet ud af at DLL'en er loadet hele tiden når mit simuleringsprogram kører, men bliver unloadet når programmet lukkes.

Og det jeg vil er at gemme data lokalt i DLL'en mens den er loadet. Der sker intet ved at data'erne forsvinder når DLL'en unloades.

Hvordan er det så mest hensægtsmessigt at gemme data lokalt i DLL'en er det globale variable eller er det et "fy" ord?
Avatar billede bertelbrander Novice
31. maj 2011 - 21:48 #7
Det kommer meget an på situationen og størrelsen på DLL'en. Hvis koden til DLL'en er "lille" og overskuelig er det letteste bare at gemme i globale variable.
Avatar billede akilleuz Nybegynder
31. maj 2011 - 22:00 #8
I første omgang bliver koden lille og overskuelig men jeg forudser det ændre sig på sigt.

Kan man lave andre DLL'er og gemme i eller vil dette også give problemer? Eller er jeg så tilbage til txt filer?

Jeg tror dit næste svar skal være et svar :) du har ihvertfald guidet mig i den rigtige retning!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester