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

kako pronaći duljinu AnsiString polja?

[es] :: C/C++ programiranje :: kako pronaći duljinu AnsiString polja?

[ Pregleda: 1963 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon kako pronaći duljinu AnsiString polja?10.05.2006. u 15:19 - pre 218 meseci
Ovako, imam Varijablu tipa AnsiString u koju spremim neku rečenicu. E sad kako mogu saznati koliko znakova ima u njoj jer se ona sastoji od Char-ova. Pokušao sam sa StrLen() ali mi traži Char* a ne moj AnsiString.

KAko to mogu riješiti, treba mi dakle, funkcija koja će vratiti integer, i.e. broj slova u rečenici zajedno sa razmacima.

Inače, to radim u BCB

[Ovu poruku je menjao maximus_1 dana 10.05.2006. u 16:19 GMT+1]
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: kako pronaći duljinu AnsiString polja?10.05.2006. u 15:37 - pre 218 meseci
Pronašao sam. Koristio sam Length() funkciju
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: kako pronaći duljinu AnsiString polja?10.05.2006. u 15:54 - pre 218 meseci
Ipak ću trebati pomoć. Duljina rečenice mi je trebala da odredim širinu forme. E sad mi treba formula za to. Probao sam sa

Code:
Form->Width = duljina*10


ili tako nešto ali jednostavo ne pali. Za neku duljinu rečenice namjestim koeficijent ali ako drastično promijenim veličinu rečenice, forma bude preširoka ili preuska.
 
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: kako pronaći duljinu AnsiString polja?10.05.2006. u 16:21 - pre 218 meseci
Odgovor na tvoje pitanje nije jednostavan.

Prvo moras reci kog tipa (koja klasa/komponenta) je taj tekst. Dakle, da li je to TLabel,
tekst unutar TPanel ili TButton ili se radi o tekstu unutar TMemo ili TRichEdit. Takodje,
ako se radi o tekstu unutar TRichEdit, da li je on podlozan menjanju fonta i njegovih
atributa i sl.

Generalno, korišćenje koefecijenta za množenje nije dobar izbor, pogotovo ako korisnik
promeni DPI celog OS-a na 120.

Postoji metoda TextWidth koja ti moze dati sirinu u pixelima na primer neke labele. Ponekad
je prethodno potrebno napraviti instancu TCanvas, pa koristiti njenu TextWidth, a ponekad
TControlCanvas pa njenu TextWidth().

Za TRichEdit je opet drugo, pogotovo ako koristis vise formata unutar jedne linije teksta.
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: kako pronaći duljinu AnsiString polja?10.05.2006. u 16:30 - pre 218 meseci
To je tekst koji ispisujem na formu i nije podložan mijenjanju (font isl.). želim samo da se forma prilagođava njegovoj duljini. dakle nije ni label ni textbox nego se direktno ispisuje na formu.
 
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: kako pronaći duljinu AnsiString polja?10.05.2006. u 16:32 - pre 218 meseci
Kako se ispisuje, mozda sa TextOut(), (mozes li da pokazes barem deo koda) ?
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: kako pronaći duljinu AnsiString polja?10.05.2006. u 16:37 - pre 218 meseci
Ma nema problema:

Code:
        for(i = 0; i < n; i++){
                dat = StrToDate(Ispisi[i].DanKolegija + "." + Ispisi[i].MjesecKolegija + ".2006");
                Preostalo = dat - Date();
                brDana = " Još " + IntToStr(Preostalo) + " dana";
                if(Preostalo == 0){
                        brDana = "Danas !!!";
                }
                if(Preostalo == 1){
                        brDana = "Sutra !!!";
                }
                if(Preostalo == 2){
                        brDana = "Prekosutra !!!";
                }

                //duljina forme *************
                int duljina = 0;
                duljina = Ispisi[i].ImeKolegija.Length();
                if(duljina > MaxLength)
                        MaxLength = duljina;

                frmMain->Width = MaxLength*10;
                //***************************

                frmMain->Canvas->TextOutA(10, (20*i + 10), Ispisi[i].ImeKolegija + " - " + " " + brDana);

        }


E sad, problem je unutar zvjezdica, jer bi mi trebao neki koef. s kojim množim
 
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: kako pronaći duljinu AnsiString polja?10.05.2006. u 16:49 - pre 218 meseci
Pretpostavljam da treba nekako ovako /netestirano/:

Code:

AnsiString TajText = Ispisi[i].ImeKolegija + " - " + " " + brDana;
int sirina = frmMain->Canvas->TextWidth( TajText );
frmMain->Canvas->TextOutA(10, (20*i + 10), TajTekst );


Nadam se da ti je taj kod koji si prikazao unutar OnPaint(), jer ce inace
nestati nakon minimizovanja, i sl.
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: kako pronaći duljinu AnsiString polja?10.05.2006. u 16:50 - pre 218 meseci
Da, OnPaint() je. Zahvaljujem, probat ću da li radi
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: kako pronaći duljinu AnsiString polja?10.05.2006. u 18:03 - pre 218 meseci
Ok, sredio sam. Hvala još jednom.
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: kako pronaći duljinu AnsiString polja?10.05.2006. u 18:25 - pre 218 meseci
Može još nešto:

Kako znati da miš nije na formi? Tj. Kako znati da se kursor miša nalazi izvan područja forme (da se ne kreće po njoj)?
 
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: kako pronaći duljinu AnsiString polja?10.05.2006. u 18:44 - pre 218 meseci
Postavi novu temu, npr:
BCB: Da li je miš na unutar ili van forme ...

Ipak smo se udaljili od:
Re: kako pronaći duljinu AnsiString polja?

P.S.

Nema ljutnje, cisto da se pridryavamo pravila na forumu...

Pozdrav.

 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: kako pronaći duljinu AnsiString polja?10.05.2006. u 18:50 - pre 218 meseci
Ok, i mislio sam se da li postavljat. Nema veze, pozdrav.
 
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: kako pronaći duljinu AnsiString polja?10.05.2006. u 18:51 - pre 218 meseci
Ja sam ti spremio odgovor. Ti samo postavi temu... ;)

 
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: kako pronaći duljinu AnsiString polja?10.05.2006. u 18:54 - pre 218 meseci
Evo ti onda ovde:

To se na primer moze postoci hvatanjem poruka CM_MOUSELEAVE i CM_MOUSEENTER.
U Borland C++ Builderu jedan od nacina da se to implementira je na primer
ovako /netestirano/:

--- H (Unit1.h/Form1) ---

Code:

// privatni deo
void __fastcall CMMouseLeave(TMessage&);
void __fastcall CMMouseEnter(TMessage&);

// javni deo
BEGIN_MESSAGE_MAP 
    VCL_MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave)
    VCL_MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, CMMouseEnter)
END_MESSAGE_MAP(TForm)


--- CPP (Unit1.cpp/Form1) ---

Code:

// ako je mis napolju
void __fastcall TForm1::CMMouseLeave(TMessage &Message)
{
   Caption = "Napolju";
}

// ako je mis unutra
void __fastcall TForm1::CMMouseEnter(TMessage &Message)
{
   Caption = "Unutra";
}



To je medjutim, samo osnovni kod. Mislim da ces morati da hvatas jos neke
dogadjaje da budes 100% siguran. Takodje imaj u vidu da u nekim posebnim
slucajevima, kada se kursor misa strahovito brzo pomeri van, moze doci do
toga da se dogadjaj ne uhvati. Ali to za sada ne treba da te brine.
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: kako pronaći duljinu AnsiString polja?12.05.2006. u 18:59 - pre 218 meseci
Ok ali kako pozvati tu funkciju?
 
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: kako pronaći duljinu AnsiString polja?12.05.2006. u 19:19 - pre 218 meseci
Zasto ce ti pozivanje funkcije?

Prosto, ta dva dogadjaja ce se dogoditi u trenutku kada se desava promena. dakle, ako izlazis van,
desava se jedan dogadjaj, a kada ulazis - dogadja se onaj drugi.

Unutar tela funkcije, ti postavi kod koji ti treba umesto onoga Caption = "...".
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: kako pronaći duljinu AnsiString polja?12.05.2006. u 19:20 - pre 218 meseci
aha, kužim. Hvala po ne znam koji put (ne brini se, bit će još)
 
Odgovor na temu

[es] :: C/C++ programiranje :: kako pronaći duljinu AnsiString polja?

[ Pregleda: 1963 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

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