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

upisivanje karakteristika (kodova) (borland)

[es] :: C/C++ programiranje :: upisivanje karakteristika (kodova) (borland)

[ Pregleda: 3204 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon upisivanje karakteristika (kodova) (borland)02.06.2005. u 15:24 - pre 230 meseci
kompjuter za svaku boju ima odredjeni kod...
kako bih mogao upisati u neki txt fajl npr boju koja se trenutno koristi u aplikaciji?
npr. imam richedit komponentu, i hocu da mi se u neki txt fajl upise odredjena vrijednost kojom kompjuter prepoznaje koja je boja u pitanju...
fora je u tome sto bih htio napraviti da mi kasnije, pri ucitavanju, aplikacija procita vrijednost iz toga fajla i dodjeli aplikaciji onu boju koja ima istu vrijednost kao kod u txt fajlu...isto bih htio napraviti i za font (vrsta fonta, velicina fonta, boja fonta)...
pa ako bi me ko znao usmjeriti kad su ovih par stvari u pitanju, bio bih jako zahvalan...
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.fsb.hr.



+9 Profil

icon Re: upisivanje karakteristika (kodova) (borland)02.06.2005. u 15:31 - pre 230 meseci
Svaka boja ti je, zapravo, RGB kombinacija (cesto se korisiti i TColor za reprezentaciju). Znaci, da bi u datoteku upisao neku boju trebao bi znati tu RGB kombinaciju. Medjutim, Ti mozes reci da ti u datoteku snimi npr.

// napamet pisem clan za boju...
(double)this->Color;

Ti ces tada zapisati samo jedan broj u datoteku koji ce predstavljati sva tri dijela R G i B. Isto tako i kad citas. Procitas taj jedan broj i odjednom imas cijelu RGB kombinaciju (koju ces upotrijebiti kako hoces).
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: upisivanje karakteristika (kodova) (borland)02.06.2005. u 16:35 - pre 230 meseci
Predlazem ti da za snimanje/ucitavanje poslednje koriscenih osobina
koristis TIniFile klasu. Pogledaj Help, sve je lepo objasnjeno. Dakle radi se
o INI datotekama, koje imaju sekciju, kljuc i vrednost:

[SEKCIJA]
KLJUC=VREDNOST

C++Builder / VCL poseduje vec gotove funkcije:

ColorToString()
StringToColor()

...za takve manipulacije. Prednost ovih funkcija je sto ce raditi i za vrednosti
koje su upisane u nekom HEX formatu RGB (u C++ Buildersu su zapravo
0x00BBGGRR), ali i za opisne tipa 'clMoneyGreen'.


[Ovu poruku je menjao X Files dana 02.06.2005. u 17:46 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: upisivanje karakteristika (kodova) (borland)02.06.2005. u 16:45 - pre 230 meseci
Da bi probao ovo sto sam gore napisao probaj recimo ovo:

Stavi dve TLabel komponente (Label1 i Label2)

Svati dve TEdit komponente (Edit1 i Edit2), i u prvu (kao default tekst) upisi
0x000000FF a u drugu clRed

Zatim stai jedan TButton (Button1) i u njega kod:

Code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   Label1->Font->Color = StringToColor( Edit1->Text ); // Edit1: 0x000000FF
   Label2->Font->Color = StringToColor( Edit2->Text ); // Edit2: clRed
}

 
Odgovor na temu

Mirko Rajkovača
Subotica

Član broj: 18458
Poruke: 119
*.ptt.yu.



Profil

icon Re: upisivanje karakteristika (kodova) (borland)03.06.2005. u 18:04 - pre 230 meseci
X Files je u pravu, najlakse ti je da koristis TIniFile. Boje moze snimati/ucitavati i na sledeci nacin:

TIniFile *ini=new TIniFile("colors.ini");
ini->WriteInteger("Section","Key",Memo1->Color);//pisanje u ini file
Memo1->Color=ini->ReadInteger("Section","Key",0);//citanje boje
delete ini;

U ovom slucaju ti boju pamti kao integer,ali radi bez problema.

Razlika izmedju softvera i hardvera je:
Softver je nesto sto mozes psovati, a hardver je... pa hardver je nesto sto mozes sutati
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: upisivanje karakteristika (kodova) (borland)04.06.2005. u 14:22 - pre 230 meseci
hvala vam puno!!
ovo je ono sto mi je trebalo!!

sve sam napravio sta mi je trebalo, ali evo sada jdno pitanje oko kojeg glavu razbijam vec nekoliko sati:

zasto ovo nece da radi:

napravio sam RichEdit komponentu i dugme koje zove FontDialog, na ovaj nacin:
--------------
if(FontDialog1->Execute());
{
RichEdit1->Font=FontDialog1->Font;
}
--------------
i pri izlazu, u INI fajl se upisuje sljedece:

------------------------------------------------------------------------
TIniFile *ini=new TIniFile("IME_FAJLA.ini");
ini->WriteInteger("font","boja",RichEdit1->DefAttributes->Color);
ini->WriteInteger("slova","visina",RichEdit1->DefAttributes->Height);
ini->WriteString("karakteri","ime",RichEdit1->DefAttributes->Name);
delete ini;
--------------
a pokusavao sam i sa:

--------------
TIniFile *ini=new TIniFile("IME_FAJLA.ini");
ini->WriteInteger("font","boja",FontDialog1->Font->Color);
ini->WriteInteger("slova","visina",FontDialog1->Font->Height);
ini->WriteString("karakteri","ime",FontDialog1->Font->Name);
delete ini;
----------------------------------------------------------------------
a pri podizanju se ucitava na sljedeci nacin:

----------------------------------------------------------------------
TIniFile *ini=new TIniFile("IME_FAJLA.ini");
RichEdit1->DefAttributes->Color=ini->ReadInteger("font","boja",0);
RichEdit1->DefAttributes->Height=ini->ReadInteger("slova","visina",0); //ili ("slova","visina",10)
RichEdit1->DefAttributes->Name=ini->ReadString("karakteri","ime",0); //ili ("karakteri","ime",Verdana)
delete ini;
---------------

tj. pokusavao sam i sa:

---------------
TIniFile *ini=new TIniFile("IME_FAJLA.ini");
RichEdit1->Font->Color=ini->ReadInteger("font","boja",0);
RichEdit1->Font->Height=ini->ReadInteger("slova","visina",0);
RichEdit1->Font->Name=ini->ReadString("karakteri","ime",0);
delete ini;
--------------------------------------------------------------------
ali ovo , jednostavno , nece da radi!!!!!
tj. radi ponekad...
prvo...u ini fajl aplikacija ZAPISE, cini mi se svaki put, ime fonta koji koristim...
dobro...boja fonta je neki broj...(cesto veoma velik- u stotinama hiljada, pa cak i veoma cesto, tj skoro uvijek i u milionima) (zapitam se: kakav je to integer??? :-) to i ne moze biti integer,on je puno manji...)
a visina fonta je takodje neki broj (nikad se ne podudara sa onom velicinom fonta koju sam odabrao, a cesto je i sa predznakom MINUS)

e sad se ja pitam...GDJE sam pogrijesio??? ako neko uoci gresku, molio bih ga da mi to javi, kako bih je mogao otkloniti...



kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: upisivanje karakteristika (kodova) (borland)05.06.2005. u 19:48 - pre 229 meseci
Citat:

if ( FontDialog1->Execute() );
{
RichEdit1->Font=FontDialog1->Font;
}

Ovo je OK. U principu se cela struktura Font objekta prenosi u RichEdit.

Citat:

TIniFile *ini=new TIniFile("IME_FAJLA.ini");

Dve zamerke:

1) Kada je u pitanju otvaranje nekih datoteka u Windows-ima *uvek*
koristi pune putanje. Dakle, ispred "IME_FAJLA.ini" treba da dodaš kod
koji će osigurati *tačnu putanju*. U kodu koji sam dole ostavio možeš da vidiš
kako se to može uraditi.

2) Kada je u pitanju otvaranje nekih datoteka u Windows-ima *uvek*
treba da imaš neki sigurnosni kod, jer ukoliko je tvoja datoteka pri učitavanju
ekskluzivno zauzeta od nekog drugog programa, ili je "read only" dolazi do
sistemske greške i program može da prestane da se ponaša kako si zamislio, ako
to nisi predvideo. Takođe pogledaj moj kod.

Ne bi bilo zgorega da pogledaš šta je to RAII u smilsu sigurnosti C++ koda.

Citat:

ini->WriteInteger("font","boja",RichEdit1->DefAttributes->Color);


Dakle, kao što rekoh koristi StringToColor() i ColorToString(). Pametno je držati
se rešenja koja su *standardna* u nekoj biblioteci klasa. Sve to može i sa Integer
ali...

Evo nešto koda...

Code:

// ...
#include <IniFiles.hpp>
// ...

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if( FontDialog1->Execute() );
   {
      RichEdit1->Font = FontDialog1->Font;
   }
}

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   TIniFile *pIni = NULL;
   try
   {
      try
      {
         pIni = new TIniFile( ExtractFilePath( ParamStr(0) ) + "konfiguracija.ini" );

         RichEdit1->Font->Name = pIni->ReadString( "RichEdit", "Name", "Arial" );
         RichEdit1->Font->Color = StringToColor( pIni->ReadString( "RichEdit", "Color", "clBlack" ) );
         RichEdit1->Font->Height =  pIni->ReadInteger( "RichEdit", "Height", -11 );
      }
      catch ( const Exception &e )
      {
         // Moze neka poruka o gresci...
      }

   }
   __finally
   {
      if ( pIni )
         delete pIni;
   }
}

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
   TIniFile *pIni = NULL;
   try
   {
      try
      {
         pIni = new TIniFile( ExtractFilePath( ParamStr(0) ) + "konfiguracija.ini" );

         pIni->WriteString( "RichEdit", "Name", RichEdit1->Font->Name );
         pIni->WriteString( "RichEdit", "Color", ColorToString( RichEdit1->Font->Color ) );
         pIni->WriteInteger( "RichEdit", "Height", RichEdit1->Font->Height );
      }
      catch ( const Exception &e )
      {
         // Moze neka poruka o gresci...
      }

   }
   __finally
   {
      if ( pIni )
         delete pIni;
   }
}

 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: upisivanje karakteristika (kodova) (borland)06.06.2005. u 21:09 - pre 229 meseci
hvala, pogledacu!!!
nadam se da nece ponovo nesto zapeti...
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.fsb.hr.



+9 Profil

icon Re: upisivanje karakteristika (kodova) (borland)07.06.2005. u 14:43 - pre 229 meseci
Kada ucitavas iz INI datoteke i to pridjeljujes RichEdit komponenti izbaci onaj 'DefAttributes'. Adresiraj se direktno na Font clan RichEdit objekta.
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: upisivanje karakteristika (kodova) (borland)07.06.2005. u 17:18 - pre 229 meseci
hvala vam puno na odgovorima!!!!
pa i jesam izbacio defattributes, i uradio kako ti predlazes...

samo jedna napomena:
i nije bas mozda dobra kombinacija:

if(FontDialog1->Execute())
{
RichEdit1->Font->FontDialog1->Font;
}

jer se desava sljedece...Kada se pritisne "ok", normalno font dobija izgled kakav smo i stavili da bude (boja, velicina, ime fonta...) ALI problem nastaje kada stisnemo "cancel"!! Tada font dobija takodje novi izgled, i to u zavisnosti gdje je bilo potamljeno na raznim sekcijama font dialoga, umjesto da se samo vratimo nazad...Normalno oni koji se vec dugo bave Borland builder-om to znaju, ali ja sam to tek nedavno primjetio...
Ako bi ko od iskusnijih zelio objasniti kako to da se rijesi, bio bih jako zahvalan...
za apply znam rijesiti, ali ne znam za Cancel....
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: upisivanje karakteristika (kodova) (borland)07.06.2005. u 18:28 - pre 229 meseci
Stavi:

Code:

FontDialog1->Font = RichEdit1->Font;


ispred
if ( FontDialog1->Execute() );

dakle:

Code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{

   FontDialog1->Font = RichEdit1->Font;
   if( FontDialog1->Execute() );
   {
      RichEdit1->Font = FontDialog1->Font;
   }
}

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: upisivanje karakteristika (kodova) (borland)07.06.2005. u 20:25 - pre 229 meseci
Našao sam grešku :) Da puknem od muke...

U tvom PRVOM kodu, koji sam kopirao od tebe, stavio si TAČKA ZAREZ tamo gde
ne treba:

Code:

if(FontDialog1->Execute()); < --- UKLONI TAČKA ZAREZ
{
RichEdit1->Font=FontDialog1->Font;
}


... i sve će raditi kako treba!
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: upisivanje karakteristika (kodova) (borland)08.06.2005. u 11:54 - pre 229 meseci
da, da... to je to!!!!!
sada je sve u redu!!!!ne mogu da vjerujem sta nas je sve uspjelo, bar na trenutak, zeznuti...
hvala puno!!!!!
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

[es] :: C/C++ programiranje :: upisivanje karakteristika (kodova) (borland)

[ Pregleda: 3204 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

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