Porównywanie łańcuchów

0

W moim programiku dokonuję porównania łańcuchów. Oto fragment kodu:

AnsiString wyraz1 = "mama";
AnsiString wyraz2 = "tata";

if(wyraz1 Lines->Add(wyraz1);
else
RichEdit1->Lines->Add(wyraz2);

Wszystko jest wporządku, tzn. zwracany jest wyraz który znajduje się bliżesz początku alfebatu... problem pojawia się dopiero wtedy kiedy jeden z wyrazów zawiera jakiś polski znak ;-(

Jak można ominąć ten bug [stuk]

0

sprobuj strcmp() chyba w stdlib.h albo stdio.h sie znajduje, tylko on pobiera tablice char nie wiem jak z CString bedzie, ale sprobuj :-)
zawsze mozesz CStrin na char zamienic, chociaz z tym porownywaniem to nie wiem czy to nie porownuje wzgledem kolejnosci tych znakow w ASCII, a polskei znaki sa tam chyba jakos inaczej poumieszczane :-8

np 165=Ą 185=ą

0

Witam
Robisz błąd że używasz operatora = a nie funkcji do porównywania łąńcuchów z C czyli strcmp(). Możesz mić problem przy tej funksji bo ona "pracuje" na char* czyli misisz to używać w powyższy sposób:
strcmp(NazwaZmiennejAnsiString.c_str(),NazwaZmiennejAnsiString.c_str()). Co ta funkcja zwraca poczytaj w helpie.
Inna funkcja porównująca AnsiStrigi ze sobą (Borland C++ Builder) AnsiStrComp(char * S1, char * S2);
Onyx24

0

Bardzo dziekuję za pomoc [browar]

Zadziałało coś takiego:

AnsiString wyraz1 = "mama";
AnsiString wyraz2 = "tata";

if(AnsiStrComp(wyraz1.c_str(), wyraz2.c_str()) Lines->Add(wyraz1);
else
RichEdit1->Lines->Add(wyraz2);

[cya]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.