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

[bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)

[es] :: C/C++ programiranje :: [bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)

[ Pregleda: 1836 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
46.217.41.*



+14 Profil

icon [bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)23.07.2012. u 18:24 - pre 143 meseci
Ovako imam da uradim validaciju teksta koi se nalazi u editu. Format koi bi tebao da bude je BROJ,000 (1,000) sto znaci da bi ja morala proveriti prvo dali ima zapirke i koliko ih ima, ako ima trebala bi da bude posle broja da nije " ,000" (naravno i da je jedna), ako je ima da je na "100," treba da doda "000" ako je "100,01" treba da doda "0"...nasla sam primere za funkciju StrScan koja nalazi karakter u stringu. ali i ne broj karaktera u tom stringu (valjda postoji i ta funkcija), treba mi i funkcija koja bi mi dala vrednost sve posle "," na desno...Da ne bi radila ovo "pesacke" sa ciklusima i tako to ako moze neko da mi pomogne oko te funkcije. Hvala
 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
46.217.41.*



+14 Profil

icon Re: [bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)23.07.2012. u 19:03 - pre 143 meseci
a evo kako sam ja uradila, ali ovo mi se ne svidja mora da ima funkcije

u edit moze da se unese samo 0 - 9 i ','

Code:

AnsiString pom11 = Edit8->Text;
int poslezapirke = 0;
int brojzapirke = 0;

    for( int i=1; i<=Edit8->Text.Length(); i++ )
    {
        if( pom11[i]==',' )
            brojzapirke = brojzapirke + 1;
        if( brojzapirke > 0)
            poslezapirke = poslezapirke + 1;
    }

    if( brojzapirke > 1 )
        Edit8->Text = Edit8->Text + "1,000";

    else if( brojzapirke == 0 )
        Edit8->Text = Edit8->Text + ",000";

    else if( brojzapirke==1 )
    {
        if( (poslezapirke - 1) == 0 )
                Edit8->Text = Edit8->Text + "000";
            else if( (poslezapirke - 1) == 1 )
                        Edit8->Text = Edit8->Text + "00";
                else if( (poslezapirke - 1) == 2 )
                            Edit8->Text = Edit8->Text + "0";
                    //else if( (poslezapirke - 1) == 3 )
                        else if( (poslezapirke - 1) > 3 ) //samo tu bi trebala opet da pravim validaciju neku da uzme broj zapirku i tri karaktera posle zapirke
                                    Edit8->Text="1,000";
    }
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: [bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)23.07.2012. u 19:48 - pre 143 meseci
BCB? Length f-ja?
Ne kapiram bas sta zelis da uradis; ako sam dobro razumeo treba da u EDIT boxu bude samo broj u formatu *,xxx (gde * moze biti bilo koji ceo broj, a xxx tri cifre od kojih bilo koja moze biti 0)?

Posto delovima stringa mozes pristupiti kao karakterima a mozes index stringa iskoristiti kao string uvek mozes da uradis sub-string search. U prevodu:
i = Pos(';', Edit->Text);
j = Pos(';', Copy(Edit->Text, i, MaxInt));
Ako je j <> 0 znaci da ima 2 ';'. Ako je i = 0 znaci da nema ';'.

Takodje postoji i zgodna f-ja Format (koja radi na slican nacin kao sprintf). Pa mozes nju da iskoristis i sve uradis u jedan/dva reda.
 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
46.217.41.*



+14 Profil

icon Re: [bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)23.07.2012. u 19:57 - pre 143 meseci
*.xxx gde * i x (0 - 9) je bilo koi broj. Ok je to, ali treba proveriti tacan broj znaka (u ovom slucaju ",")...spored ovog koda valjda se razume sto sam htela a evo i ispravke t.e ceo kod

Code:

AnsiString pom11 = Edit8->Text;

int    poslezapirke = 0;
int mestozapirka = 0;
int brojzapirke = 0;

    for( int i=1; i <= pom11.Length(); i++ )
    {
        if( pom11[i]==',' )
        {
            mestozapirka = i;
            brojzapirke = brojzapirke + 1;
        }
        if( brojzapirke > 0)
        {
            poslezapirke = poslezapirke + 1;
        }
    }

    if( brojzapirke > 1 )
        Edit8->Text = "1,000";

    else if( brojzapirke == 0 )
        Edit8->Text = Edit8->Text + ",000";

    else if( brojzapirke==1 )
    {
        if( (poslezapirke - 1) == 0 )
                Edit8->Text = Edit8->Text + "000";
            else if( (poslezapirke - 1) == 1 )
                        Edit8->Text = Edit8->Text + "00";
                else if( (poslezapirke - 1) == 2 )
                            Edit8->Text = Edit8->Text + "0";
                    //else if( (poslezapirke - 1) == 3 )
                        else if( (poslezapirke - 1) > 3 )
                        {
                            Edit8->Text = "";
                            for( int i = 1; i <= ( mestozapirka + 3 ); i++ )
                            Edit8->Text = Edit8->Text + pom11[i];
                        }
    }


[Ovu poruku je menjao sanivr dana 23.07.2012. u 21:07 GMT+1]
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.mrse.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: [bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)24.07.2012. u 02:25 - pre 143 meseci
Šta je zapirka?
Tko leti vrijedi
 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
46.217.41.*



+14 Profil

icon Re: [bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)24.07.2012. u 07:49 - pre 143 meseci
zarez
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: [bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)24.07.2012. u 12:11 - pre 143 meseci
Kod nije bash shvvatljiv :)
Daj malo konkretnih primera?
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.mrse.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: [bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)24.07.2012. u 14:37 - pre 143 meseci
Validacija formata nekog teksta se relativno zgodno rešava regularnim izrazima. Problem je naravno što bcb ima samo suvu biblioteku PCRE.

Za validaciju bi trebalo koristiti ovaj izraz:

Code:

^(\+|\-|)\d,\d{3}$


Dalje bi ti samo trebalo uputstvo kako se koristi PCRE u bcb-u, odnosno najvažnija funkcija pcre_compile .

na primer:

PCRE example
Tko leti vrijedi
 
Odgovor na temu

[es] :: C/C++ programiranje :: [bcb] rad sa stringovima (pronalazenje znaka, odredjivanje mesta posle znaka)

[ Pregleda: 1836 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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