You either use (prone to serious security problem called buffer overflow)
char dum[32];
strcpy(dum,InstList->Lines->Text.c_str());
OR (much better since it works with any length without being prone to a serious security problem called buffer overflow)
// 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());
EDIT - as per comments:
I am assuming that you are using an older BCB version which still has AnsiString
- if this is on a newer version UnicodeString
then the code could lead to "strange results" since unicode string take up multiple bytes per character (depending on the encoding etc.).