Вы либо используете (подвержен серьезной проблеме безопасности, называемой переполнение буфера )
char dum[32];
strcpy(dum,InstList->Lines->Text.c_str());
ИЛИ (намного лучше, поскольку он работает с любой длиной, не будучи подвержен серьезной проблеме безопасности, называемой переполнение буфера )
// C style
// char *dum = malloc(strlen(InstList->Lines->Text.c_str())+1);
// BCB style...
char *dum = malloc(InstList->Lines->Text.Length()+1);
// BEWARE: AFTER any malloc you should check the pointer returned for being NULL
strcpy(dum,InstList->Lines->Text.c_str());
РЕДАКТИРОВАТЬ - согласно комментариям:
Я предполагаю, что вы используете более старую версию BCB, которая все еще имеет AnsiString
- если это на более новой версии UnicodeString
, тогда код может привести к "странным результатам", так как строка Unicode занимает несколькобайт на символ (в зависимости от кодировки и т. д.).