To me that you have some design flaws in your code to begin with. The fact that you are even using c_str() in relation to TStringList suggests If you need a char* pointer, then you have to assign a UnicodeString to an UnicodeString::c_str() now returns a wchar_t* pointer instead.
#BORLAND C BUILDER 2009 UPDATE#
In 2009 Update 1, that behavior wasĮliminated. That hidden modification of data can cause a lot of That is the internal UnicodeString data had to be converted from Unicode toĪnsi behind the scenes. With legacy code that had not been updated to Unicode yet. UnicodeString::c_str() returned a char* pointer for backwards-compatibility Which release of 2009 are you using? In the RTM release, > If I substitute t_str() it works as before. There is no c_str() method in TStringList. wrote in message It seems that the TStringList function c_str() creates this problem. This is not something that has changed between 20. > I shudder to think of how many places I'll need to change this in my
> in order to achieve comparable results to bcb2006. Manually after SubString() finished its work. You must have beenĭoing something else with the resulting String to strip off the terminator You always had to do that, in all versions of the VCL. Your SubString would always have contained the terminating "\t" Pos() always returned a 1-based index, where 0 means no match wasįound. used to return a string which does not include my delimiting tab > FileContents->Strings.SubString(1, FileContents->Strings.Pos("\t")) And String is a typedef for UnicodeString now, not for AnsiString Wrote in message Has there been a change to the TStringList::Pos() function in bcb2009?