Szukanie ciągu znaków w tekscie

dział ogólny

Szukanie ciągu znaków w tekscie

Nowy postprzez Krzysiu555 » wtorek, 23 grudnia 2008, 16:31

Chciałbym dowiedzieć się czy da się (pewnie tak) i jak można szukać ciągu znaków w tekście.

Powiedzmy że mam Memo1 a w nim tekst. I chcę sprawdzić czy występuje w tym tekście ciąg np. "zielona trawa" albo jedno słowo np. "drzewo".

Niby w zakładce Dialogs jest FindDialog, ale coś nie działa. Albo ja nie umiem się nim posługiwać.=\
Albo można to może jakoś zrealizować za pomocą kodu? (a nie komponentu)

Proszę o pomoc.
Avatar użytkownika
Krzysiu555
Intelektryk
Intelektryk
 
Posty: 161
Dołączył(a): sobota, 23 sierpnia 2008, 16:55
Podziękował : 2
Otrzymał podziękowań: 1
System operacyjny: Windows 7 Professional 64
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 0
    NieznanyNieznana

Re: Szukanie ciągu znaków w tekscie

Nowy postprzez Michalos » wtorek, 23 grudnia 2008, 17:11

Witaj!

Proponuję użyć takiego kodu:
Kod: Zaznacz cały
int p;
String TEKST = Memo1->Text;
p = TEKST.Pos("test");
if(p>0) ShowMessage("Znalazłem słowo test");
else ShowMessage("Nie znalazłem słowa test");


funkcja Pos() zwraca pozycje szukanego ciągu, jeśli wynosi 0 to szukanego ciągu nie ma :)
Avatar użytkownika
Michalos
Bladawiec
Bladawiec
 
Posty: 35
Dołączył(a): niedziela, 19 października 2008, 11:45
Podziękował : 1
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Szukanie ciągu znaków w tekscie

Nowy postprzez Miroo_007 » wtorek, 23 grudnia 2008, 21:57

Hej. Tutaj tylko dodam co już powiedział Michalos:
Kod: Zaznacz cały
AnsiString TEKST = Memo1->Text;
p = TEKST.Pos("test");
if(p>0) ShowMessage("Znalazłem słowo test");
else ShowMessage("Nie znalazłem słowa test");

TEKST.Pos("test"); - zaczyna szukać od początku tekstu
Kod: Zaznacz cały
AnsiString TEKST = Memo1->Text;
p = TEKST.LastDelimiter("test");
if(p>0) ShowMessage("Znalazłem słowo test");
else ShowMessage("Nie znalazłem słowa test");

TEKST.LastDelimiter("test"); - zaczyna szukać od końca tekstu
Ten zapis można skrócić do takiej postaci:
Kod: Zaznacz cały
if( (Memo1->Text.Pos("test")) > 0) ShowMessage("Znalazłem słowo test");
else ShowMessage("Nie znalazłem słowa test");
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Szukanie ciągu znaków w tekscie

Nowy postprzez Frani0 » wtorek, 23 grudnia 2008, 22:44

tu masz kawałek kodu
Kod: Zaznacz cały
bool zawiera(char *serch,char *all)
{
        String napis="";

        int k;
        int dl1=strlen(all);
        int dl2=strlen(serch);

        for(int i=0;i<dl1;i++)
                {
                for(int j=0;j<dl2;j++)
                        {
                                napis="";
                                napis+=serch[j];
                                napis+=" ";
                                napis+=all[i+j];

                                if(serch[j]!=all[i+j])
                                        break;
                                k=strlen(serch)-1;
                                if(j==k)
                                        return true;
                        }
                }
        return false;
}
Avatar użytkownika
Frani0
Bladawiec
Bladawiec
 
Posty: 48
Dołączył(a): poniedziałek, 25 sierpnia 2008, 18:23
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Szukanie ciągu znaków w tekscie

Nowy postprzez Krzysiu555 » wtorek, 23 grudnia 2008, 23:34

bardzo dziękuje za tak liczny odzew =]

wszystko działa =]
Avatar użytkownika
Krzysiu555
Intelektryk
Intelektryk
 
Posty: 161
Dołączył(a): sobota, 23 sierpnia 2008, 16:55
Podziękował : 2
Otrzymał podziękowań: 1
System operacyjny: Windows 7 Professional 64
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 0
    NieznanyNieznana


Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 11 gości