Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

OOP: TINIFile - koliko dug život dati objektu?

[es] :: Pascal / Delphi / Kylix :: OOP: TINIFile - koliko dug život dati objektu?

[ Pregleda: 2022 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 158
*.adsl.net.t-com.hr.

ICQ: 13387003


+8 Profil

icon OOP: TINIFile - koliko dug život dati objektu?30.10.2008. u 06:56 - pre 188 meseci
Pozdrav svima na forumu!

Radim vlastitu klasu za nadgledanje stanja aplikacije, učitavanje nekih postavki aplikacije, definiranje više DBX connectiona prema bazi, nadzor kroisničkih privilegija i još svašta nešto. Klasa dio postavki čita/piše u INI fajl.

Koristim konstruktore i destruktore u kojima stvaram instance polja sa svojstvima objekata, npr. string liste. Imam posebne metode za čitanje i snimanje polja u INI, punjenje tstringsa sekcijama i sl. no trebam nešto dodatno pročitati ili zapisati i mimo tih metoda. Imam 6-8 instanciranja TINIFile u metodama.

Sam objekt kreiram odmah prije prve forme nakon stvaranja TApplication, i oslobađam prije nego zatvorim TApplication.

Dakle, cijelo vrijeme života programa imam u memoriji taj svoj objekt sa svim njegovim varijablama i sl. Mene na kraju traktata interesira, ima li smisla odmah na početku u konstruktoru stvoriti instancu TIniFile private ili protected opsega i držati je cijelo vrijeme u memoriji i samo pristupati u metodama, ili je pametnije i "sigurnije" svaki put u metodi koja to zahtjeva napraviti novu instancu TInifile i onda je otpustiti ?



I drugo, "amatersko" pitanje; mogu li napraviti unit sa svojim klasama naslijeđenih standardnih kontrola tipa TEditBox kojima bi izmijenio neke metode, dodao neka svojstva i "naučio ih nekim svojim trikovima" i da to sve skupa koristim u programu, a bez da moram raditi kontrole, instalirati ih, i sl. ? Dakle, kad stavim TEditBox na kontrolu umjesto njega ručno ga prepravim u TMojEditBox, a bez da radim dodatnu kontrolu? ( hint: TurboDelphiExplorer) ?


Unaprijed svima hvala na odgovorima.
God is real unless is declared as integer.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: OOP: TINIFile - koliko dug život dati objektu?30.10.2008. u 10:38 - pre 188 meseci
> Mene na kraju traktata interesira, ima li smisla odmah na početku u konstruktoru stvoriti instancu TIniFile private ili protected opsega i
> držati je cijelo vrijeme u memoriji i samo pristupati u metodama, ili je pametnije i "sigurnije" svaki put u metodi koja
> to zahtjeva napraviti novu instancu TInifile i onda je otpustiti ?

Nema neke bitne razlike, TIniFile je prilično "laka" klasa tako da ne utiče na potrošnju memorije. Dobra je praksa da ako retko imaš potrebu da koristiš neki objekat, nema ni potrebe da ga stalno držiš u memoriji. Inače ako ti je bitna brzina i često menjaš ini sadržaj a ne postoji opasnost da će se fajl promeniti van tvoje aplikacije, možeš koristiti TMemIniFile.

> I drugo, "amatersko" pitanje; mogu li napraviti unit sa svojim klasama naslijeđenih standardnih kontrola tipa TEditBox kojima bi izmijenio
> neke metode, dodao neka svojstva i "naučio ih nekim svojim trikovima" i da to sve skupa koristim u programu, a bez da moram raditi
> kontrole, instalirati ih, i sl. ? Dakle, kad stavim TEditBox na kontrolu umjesto njega ručno ga prepravim u TMojEditBox, a bez da
> radim dodatnu kontrolu? ( hint:

Ako kontrole nisu instalirane onda ih ne možeš koristiti u form designeru, bez instalacije ih možeš ručno praviti i postavljati direktno u kodu.
 
Odgovor na temu

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 158
*.adsl.net.t-com.hr.

ICQ: 13387003


+8 Profil

icon Re: OOP: TINIFile - koliko dug život dati objektu?30.10.2008. u 12:11 - pre 188 meseci
Pala mi je na pamet ideja (moram probati) sa redosljedom pristupa komponenti, mada mi se to riješenje previše i ne sviđa. Mislim na onu priču da napraviš svoju klasu istog imena, koja "pregazi" onu pravu ako se njen unit pozove prije nego neki drugi. No to je toliko ružno i mutno riješenje da bi prije u obzir došlo ručno štrikanje komponenata na formu.

Pitao sam jer nikad nisam probao form designeru ručno eksternim editorom podvaliti druge nazive objekata na formi tj. ručno editirati DFM.
God is real unless is declared as integer.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: OOP: TINIFile - koliko dug život dati objektu?30.10.2008. u 16:25 - pre 188 meseci
Još jedna mogućnost da koristiš standardni TEdit u designeru a onda u OnCreatu forme postaviš svoj edit umesto njega a originalni TEdit uništiš.
 
Odgovor na temu

viking13
Aleksandar Milanovic
SBB
Novi Beograd

Član broj: 131741
Poruke: 190
*.dynamic.sbb.rs.



Profil

icon Re: OOP: TINIFile - koliko dug život dati objektu?30.10.2008. u 23:37 - pre 188 meseci
Citat:
komplikator
Pitao sam jer nikad nisam probao form designeru ručno eksternim editorom podvaliti druge nazive objekata na formi tj. ručno editirati DFM.


A šta misliš kako sam prebacio D2007 projekat koji koristi TNT kontrole u D2009 koji ima Unicode podršku i ne treba mu TNT? Zar stvarno misliš da sam bio dovoljno lud da slažem kontrole po formu iz početka? :)

Znači, moguće je i vrlo je izvodljivo, samo pazi šta radiš i da ti dpr, pas i dfm budu sinhronizovani.

Najbolje editovanje odraditi direktno iz Delphi IDE-a. Ako se IDE pobuni da projekat koristi neke kontrole koje nisu instalirane, počasti ga sa Ignore klikom. :)

Obrati pažnju samo na to da moraš da edituješ SVE instance TSomeControl u TSomeOtherControl.

To konkretno znači da moraš da promeniš sve reference i u DFM i u PAS i u DPR fajlovima.

Manji problem nastaje ako neka kontrola ima neke propertije koja ova druga nema ili još gore ako se isto zovu, a nisu istog tipa.
viking ®
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: OOP: TINIFile - koliko dug život dati objektu?31.10.2008. u 00:34 - pre 188 meseci
> Obrati pažnju samo na to da moraš da edituješ SVE instance TSomeControl u TSomeOtherControl.
> To konkretno znači da moraš da promeniš sve reference i u DFM i u PAS i u DPR fajlovima.
> Manji problem nastaje ako neka kontrola ima neke propertije koja ova druga nema ili još gore ako se isto zovu, a nisu istog tipa.

Probaj GExperts i ReplaceComponents, radi upravo to.
 
Odgovor na temu

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 158
*.adsl.net.t-com.hr.

ICQ: 13387003


+8 Profil

icon Re: OOP: TINIFile - koliko dug život dati objektu?06.11.2008. u 10:41 - pre 188 meseci
Još jedno malo pitanje vezano uz OOP, da ne otvaram novu temu bezveze...

Može li funkcija vraćati neki objekt, ili mu moram pristupati kroz parametar funkcije.


Drugim riječima, evo jednog malog primjera:


Imam neki Memo, Combo ili sl. i on sadrži "itemse" tipa TStrings ili TStringlist.
Imam i neku svoju klasu TMojObjekt, odnosno instancu MojObjekt s metodom (funkcijom) GetTSPopis( const Uvjet : Strings = '') :TStrings
Funkcija je u published opsegu.

Ako kažem ( sve je konstruirano, i "živo" uključujući i MojObjekt) :

Memo.Lines := MojObjekt.GetsPopis ('NEKIUVJET'); onda ne radi.

No ako prepravim funkciju i kažem da je funkcija: GetTSPopis( const Uvjet : Strings = '', var aTSPopis = nil )

I kaže: MojObjekt.GetsPopis ('NEKIUVJET', Memo.Lines); tada sve radi.

Bilo bi mi jasno da pokušavam upisati nešto što nije instancirano i ne postoji, no Lines itekako postoji. To znači da funkcija ne može vratiti podatak tipa klase i onda ga dodijeliti, nego može isključivo utjecati na tu klasu.
God is real unless is declared as integer.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: OOP: TINIFile - koliko dug život dati objektu?06.11.2008. u 11:55 - pre 188 meseci
> Bilo bi mi jasno da pokušavam upisati nešto što nije instancirano i ne postoji, no Lines itekako postoji. To znači da funkcija ne može vratiti
> podatak tipa klase i onda ga dodijeliti, nego može isključivo utjecati na tu klasu.

Može vratiti i može se dodeliti tamo gde je to dozvoljeno, u primeru koji si ti dao pokušavaš nedozvoljenu dodelu. Pogledaj kako je deklarisan TMemo.Lines property. Ono što možeš uraditi je Memo.Lines.Assign(MojObjekt.GetsPopis ('NEKIUVJET'));

[Ovu poruku je menjao savkic dana 06.11.2008. u 13:17 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: OOP: TINIFile - koliko dug život dati objektu?07.11.2008. u 06:54 - pre 188 meseci
^
Takodje, postoji i procedure AddStrings(Strings: TStrings); virtual; kojom je moguce izvrsiti dodelu jednog string list objekta u drugom, naravno bez obzira da li je to TMemo::Lines ili nesto drugo.
 
Odgovor na temu

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 158
*.adsl.net.t-com.hr.

ICQ: 13387003


+8 Profil

icon Re: OOP: TINIFile - koliko dug život dati objektu?07.11.2008. u 10:33 - pre 188 meseci
Znam i za assign i metodu addstrings, no u svim slučajima mi nije vraćao ništa.

Nema veze, napisao sam to pametnije i ustrojio na drugi sistem.
God is real unless is declared as integer.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: OOP: TINIFile - koliko dug život dati objektu?

[ Pregleda: 2022 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.