[C++] Jakies anomalie?

0

Spotkalem sie z dziwnym (jak dla mnie) przypadkiem. Podczas dzialania programu zmienne przybieraja dziwne wartosci nie wiadomo skad. Podany przyklad nie jest jedyny z jakim sie spotkalem. wszystkie maja zwiazek z tablicami.
Podalem ponizej procedurke w ktorej wlasnie zachodza takie "anomalie".
Nie wiem, moze to ma jakies wytlumaczenie. Dla mnie to czarna magia :/
No wiec pisze sobie czat... ponizsza procedurka wykonywana jest gdy zaznaczymy usera na liscie i ma ona wyswietlic jaka wiadomosc user zostawil wlaczajac "away'a".
Podczas dzialania programu sprawdzalem w ktorym momencie zmienna AwMsg przyjmuje dziwna wartosc. Zreszta sami zobaczcie:

void __fastcall TMainForm::UsersListSelectItem(TObject *Sender,
TListItem *Item, bool Selected)
{

int i = Item->StateIndex; // w tym miejscu AwMsg = "" (tak powinno byc)

if (UI[i].AwMsg != "" && Selected) // tutaj AwMsg = "$e\x02@" (co to?)
AddMsg(UI[i].Nick + UI[i].AwMsg, "0", INF, 0, 0, INFCOL);

}

gdzie:
UI - tablica z info o userze:
struct TUserInfo
{
String Nick, IP, LogAs, ComName, OS, AwMsg;
int SH;
} UI[100];

AddMsg - procedura dodajaca text to RichEdit'a

Chociaz lancuch AwMsg przy wywolaniu procedury byl pusty to jednak jakims "cudem" warunek "if" zostal spelniony, a AwMsg przybralo wartosc "$e\x02@".
Nastepnie gdy lancuch z AwMsg jest dodawany do RichEdit'a (w procedurze AddMsg) wyskoczyl blad:

EOutOfResources with message 'Richedit line insertion error'.

Nie wiem czy dobrze to wytlumaczylem. Jak juz mowilem to nie jest jedyny taki przypadek i wszystkie zdazaly sie w tablicach.
Czy ktos wie o co w tym chodzi ???

0

A spróbuj wykorzystac funkcje empty() naleząca do interfejsu klasy string (napis.empty()) która zwraca 1 jerzeli łańcuch jest pusty :).

0

Niestety z: IsEmpty() tez jest to sam :(

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