どちらかを使用します(バッファオーバーフローと呼ばれる深刻なセキュリティ問題が発生する傾向があります)
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 文字列は 1 文字あたり複数バイトを占めるため (エンコーディングなどに応じて)、コードが「奇妙な結果」につながる可能性があります。