02. juli 2003 - 07:20Der er
19 kommentarer og 1 løsning
Config fil eller noget? gemme oplysninger
Ny har jeg gennem nattet arbejdet hårdt på et lille teksbehandlings program, som egentlig var mit eksamens projekt, men nu er der gået sport i at gøre det bedre :D Nu har jeg bl.a. fået lavet en funktion så den gemmer efter et stykke tid (har brugt Ttimer). Den har jeg gjordt variabel med en trackbar, men når jeg går ud af mit program, og ind i det igen, så har den jo ikke gemt noget. Det vil sige det er standart indstillingerne som er der igen. Hvad kan jeg gøre for at kunne gemme disse indstillinger/oplysninger (trackbar1.posistion), så den kan loade dem næste gang programmet startes?
Hvis nogle skulle misforstå "så har den jo ikke gemt noget", den har gemt txt filen ikke noget problem der. Det den ikke har gemt er de nye oplysninger om trackbar1, hvilket jeg udemærket godt kan forstå. Ved bare ikke hvad jeg kan gøre for, at den gør det
jeg tror jeg holder mig til en ini fil, hvis ellers jeg kan få det til at virke. jeg er noget så langt at der vidst kun er en fejl tilbage, og den ligger i:
"indst" = den form det skal hentes til "autovalue" = min trackbar
Den kommer med fejlen incompatible types: 'integer' and 'string' Jeg kan ikke lige få den til at være integer, men den laver filen godt nok. Hvad går det der 'not found1' ud på snowball, eller '1' som står samme sted i badass' indlæg? Håber i forstår hvad jeg skrive, for jeg gør det snart ikke selv mere. Ellers må i lige skrive hvad i ikke forstår
arne_v: Det er rigtigt nok at ini filer sådan set er et levn tilbage fra Win3.x tiden, men jeg synes nu stadig det er en ganske udmærket måde at gemme diverse informationer på.
Som der også står i Delphi's hjælp til TIniFile: "TIniFile is a low-level wrapper for the 16-bit Windows 3.x INI file system"
nu har jeg skrevet sådan: indst.autovalue.Position := iniFile.Readinteger('Autosave','Minut', '5');
så siger den bare incompatible types integer og char. Selv ville jeg gøre sådan: indst.autovalue.Position := strtoint(iniFile.Readinteger('Autosave','Minut', '5')); men lige lidt hjælper det. Hvad gør jeg forkert?
"Project filnavn.exe raised execption class EAccessViolation with message 'access violation at adress 004B7DD5 in module 'filnavn.exe'. Read of adress 00000308'. Process stopped. Use sted or Run to continue"
Den fejl har jeg snart set et par gange, er det dét, som er galt?
Jeg kan få den til at komme ud som en char, når vi skriver readinteger i stedet for readstring. Er der så ikke en char to integer? har prøvet ChrToInt og ChaToInt og CharToInt, men det virker ikke.
Nedenstående virker fint for mig. Godt nok med en Progressbar, men Position værdien for begge komponenter er jo integer, så det burde også virke hos dig.
"Laver du andre ting på "indst" formen i samme klump kode som hvor du prøver at sætte Position ?" nej ikke endnu. Kan det være fordi formen ikke er åbnet. Jeg har sat koden ind når programmet åbner, men da er formen indst ikke åben
Sån lige en detalje, grunden til du har fået incompatible types integer and char, er, at du har sat ReadInteger til at returnere en char som default værdi, ReadInteger returnerer en integer, derfor skal din default værdi også være en integer. Derfor: ReadInteger('Main','Value',5); og ikke ReadInteger('Main','Value','5');
Simon
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.