Problem w wyszukiwaniu adresu e-mail

0

Kurcze mam kod, który wyszykuje adresy [green] e-mail w danym ciągu znaków ( m1 - Memo, list1 - ListBox ):

    list1->Clear(); // WCZYSZCZENIE LISTY

    int c = 0, len = strlen ( m1->Text.c_str() );
    String ciag;

    while ( c++ != len ) { // DOPÓKI LICZNIK C NIERÓWNY DŁUGOŚCI STRINGA

        if ( m1->Text [c] == '  ' ) { // JEŚLI SPACJA TO WCZYTYWANIE DO NAPOTKANIA DRUGIEJ SPACJI
               break;
            while (  m1->Text[c++] != ' ' )
                ciag += m1->Text [c++];
 
            int z = strlen (ciag.c_str());
            ciag [z--] = 0; // WYCZYSZCZENIE OSTATNIEGO ZNAKU

            if ( IsEmailAddres ( ciag ) == true ) // JESLI POPRAWNY ADRES TO DODAJ DO LISTY
            list1->Items->Add(ciag);
        }
    }
</b>

To jest oczywiście uproszczony schemat tego kodu; ma on wyszyuwiwac inne znaki nie tylko spacje - chodzi mi o sam szkic.

I pytanie jest, dlaczego nie wczytuje mi tego e-maila ? A jeśli dam zamisat ' ' np. '(' to wszysytko ładnie wczytuje :/

tekst np. mam: dsasaddsadsableblebleblebleblblbe dsasad sadsad [email protected] asddsa - to z ustawionym wcyztywaniem ' ' nic nie wczytuje, a jak mam np.: blebleblleblblelblelblelbleb saddsa bvvlelevlevlve ([email protected]) - z ustawionym wycztywaniem '(' i ')' to wszyscytko działa o co kur... de chodzi >???< [???]

// popraw temat [mf]

0

Jak juz jestesmy w VCL, to nie ma sensu bawic sie w jakies "klasyczne" przeszukiwanie lancuchow, konwersje ze String na char* etc. Proponuje taki kod:

  TStringList *StringList = new TStringList;
  StringList -> Text = StringReplace(Edit -> Text, " ", "\n", TReplaceFlags() << rfReplaceAll);

  for(int i(0); i < StringList -> Count; ++i)
  {
    if(IsEmailAddress(StringList -> Strings[i]))
    {
      ListBox -> Items -> Add(StringList -> Strings[i]);
    }
  } 
0

Dzięki [green] Mam wobec ciebie dług wdzięczności :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1