Странная ошибка с AnsiString и TSTringList
Есть у меня следующий код:
AnsiString str = "194.106.196.100:28960";
TStringList* ipport = new TStringList;
ipport->StrictDelimiter = true;
ipport->Delimiter = ':';
ipport->DelimitedText = str;
char *srvip = (ipport->Strings[0]).t_str();
int srvport = (ipport->Strings[1]).ToInt();
//Memo1->Lines->Add("Str: " + AnsiString(str));
Memo1->Lines->Add("IP: " + AnsiString(srvip));
Memo1->Lines->Add("Port: " + AnsiString(srvport));
delete ipport;
ipport = NULL;
Для проверки эти переменные добавляю в мемо, и выходит интересная картина - в мемо у меня пишется:
IP: 194.106.196.10
Port: 28960
А картина интересная потому, что если ip сделать как 194.106.196.1000:28960 или 194.106.196.10:28960, то в мемо покажется ИМЕННО этот IP-шник... Почему так? Уже всю голову сломал. И как сделать, что бы нормально всё таки писалось?
Источник: Stack Overflow на русском