Poslao: 28 Maj 2006 11:50
|
offline
- Pridružio: 19 Dec 2005
- Poruke: 110
- Gde živiš: S one strane Drine gde padaju mine!!!
|
Napravo sam program koji ima podesavanja izgleda (menjanje skinova, menjanje boje i sl.) ali ne znam kako da svaki put kada promenim neku boju ili skin i kada iskljucim program, pa ga ponovo ukljucim da ostane to podesavanje koje sam namestio. Meni uvek kada promenim nesta i ponovo pokrenem program vrati se na staro. Kako da mi program pamti podesavanja?
Unapred hvala!
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 28 Maj 2006 12:56
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
A da napravis INI fajl u koji ces da zapisujes podesavanja?
Mozes da zapises i u Registry, mada sam ja licno protivnik toga...
|
|
|
|
Poslao: 28 Maj 2006 12:58
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Snimi sve sto je promenjeno u neki fajl (recimo neki ini) ili u registry i prilikom pokretanja samo vrati te podatke.
Npr. ako komponente koje koristis za menjanje skin-a uzimaju naziv skin-a i na osnovu toga menjaju izgled komponenti, dovoljno je da u fajl samo upises naziv skin-a koji je korisnik izabrao i prilikom ucitavanja ga samo postavi.
Dopuna: 28 Maj 2006 13:58
@bobby
Prestigao si me za minut
|
|
|
|
Poslao: 28 Maj 2006 15:59
|
offline
- Pridružio: 19 Dec 2005
- Poruke: 110
- Gde živiš: S one strane Drine gde padaju mine!!!
|
Moze li neki primer za download ako ima?
|
|
|
|
Poslao: 28 Maj 2006 17:15
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Ne znam sta bi mogli da ti napisemo
To je isto kao i kad korisnik, recimo, upise text u edit box i ti hoces da taj text tu bude i kada se program ponovo otvori.
Na bilo koji nacin snimi podatak koji zelis da vratis na pocetku programa (uopste nije bitno kako). Kada se program pokrene, samo ucitaj tu vrednost.
Evo... za edit box bi bilo ovako:
u OnDestroy eventu
var
F: System.Text;
begin
AssignFile(F, 'Data.cfg');
Rewrite(F);
Write(F, Edit1.Text);
CloseFile(F);
end;
u OnCreate eventu
var
F: System.Text;
S: String;
begin
AssignFile(F, 'Data.cfg');
Reset(F);
Read(F, S);
Edit1.Text := S;
CloseFile(F);
end;
|
|
|
|
Poslao: 28 Maj 2006 22:59
|
offline
- beli0135
- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
Ja volim drugacije da radim.. ili pisem u obican text file (TStringList ima Values property, sad da li je values, ne secam se, ali ima property kojim moze da dize ime i vrednost ako postavis "vrednost=52", znaci da nadje "vrednost" i da digne "52").
Nacin takodje na koji volim da radim je da napravim record
TSettingsi = packed record
setings1 : integer;
setings2 : string;
setings_stagod:stagod;
end;
Onda napravis read i write procedure (za vrednosti), i read/write za ceo rekord
var
settingsi:TSettingsi;
....
ms := TMemoryStream;
try
ms.write (settingsi,SizeOf(Settingsi));
ms.SaveToFile(....)
finally
ms.free;
end;
|
|
|
|
Poslao: 29 Maj 2006 17:08
|
offline
- badam
- Novi MyCity građanin
- Pridružio: 26 Maj 2006
- Poruke: 9
|
A zasto ne koristite TIniFile:
Snimanje:
var f:TIniFile;
begin
F:=TIniFile.Create(ChangeFilePath(Application.ExeName,'.ini');
F.WriteString('Podesavanja','NazivSkina',Edit1.text);
F.WriteBool('Podesavanja',SkinoviUljuceni',CheckBox1.Checked);
F.WriteInteger('Podesavanja','Levo',Form1.Left);
.
.
.
F.free
end;
Citanje
var f:TIniFile;
begin
F:=TIniFile.Create(ChangeFilePath(Application.ExeName,'.ini');
Edit1.text:=F.ReadString('Podesavanja','NazivSkina','Osnovni skin');
CheckBox1.Checked:=F.ReadBool('Podesavanja',SkinoviUljuceni',False);
Form1.Left:=F.ReadInteger('Podesavanja','Levo',0);
.
.
.
F.free
end;
|
|
|
|
Poslao: 29 Maj 2006 17:48
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Moze da koristi bilo sta za snimanje... od lokalnog fajla do nekog xml-a na web-u. Samo treba da snimi podatke
|
|
|
|
Poslao: 29 Maj 2006 18:47
|
offline
- beli0135
- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
Ne volim nikako INI fajl. Ima ogranicenje od 64 KB, a nekad se ume preterati i jednostavno je sve preko toga necitljivo.
100x je jednostavnije sve pisati u obican TXT fajl, pomocu TStringList.
Ako imas text fajl u kome je sadrzina:
Height=230
Visible=1
DoSomething=1
SomeString=MaliPerica
(uzimamo da imamo List:=TStringList i da je popunjen ovim fajlom)
Form1.Height:=StrToIntDef(List.Values['Height'],200);
ime := List.Values['SomeString'];
|
|
|
|