AnsiString让你欢喜,让你忧~~~~~~~~~~
1、AnsiString类的+=运算符重载不要使用,因为会造成一些时候的结果不一致.
2、AnsiString类的c_str()方法,返回的值的地址不要保存,因为程序中再次对那个串进行赋值操作的时候,类会释放原来的'串'占用的空间,再重新分配新的空间,会导致你的指针指向非法的地址.
3、AnsiString类,下标运行符的重载是从1开始的,而不是象我们常用的字符数组从0开始.
4、我的一点疑问:
新建工程中使用以下代码,
AnsiString AnsiTmp ("1");
AnsiString AnsiTmp2("1");
AnsiString StringAddResult;
AnsiTmp2=StringAddResult;
StringAddResult=AnsiTmp2;
AnsiTmp2=AnsiTmp+AnsiTmp2;
StringAddResult=AnsiTmp2;
编译器不会错。
但我的程序中对StringAddResult进行了一系列的操作以后,从调试的结果看串值是正常的。
但却无法完成上面语句中
AnsiTmp2=AnsiTmp+AnsiTmp2;的操作,
只要把StringAddResult的值赋给其它的AnsiString类,如AnsiTmp2或是AnsiTmp就无法完成上面的语句。
异常处理信息为:
Project Counter.exe raised exception class EaccessViolation with message 'Access violation at address 40003005 in module 'VCL50.BPL'.Read of address 0109FFFC', Process stopped. Use Step or Run to Continue.
那位知道我的错误之处,万望指点。