前几天delphi还好好
今天突然就不正常了
具体表现是ansistring这个数据类型,变成了string
ansistring=string了
定义a:ansistirng;
访问a.c_str();
等等ansistring的方法都会出错。这是为何?
今天突然就不正常了
具体表现是ansistring这个数据类型,变成了string
ansistring=string了
定义a:ansistirng;
访问a.c_str();
等等ansistring的方法都会出错。这是为何?
------------------------------------------------------------------------------------------
ShortString 255 characters 2 to 256 bytes backward compatibility
AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters, DBCS ANSI, MBCS ANSI, etc.
WideString ~2^30 characters 4 bytes to 2GB Unicode characters; multi-user servers and multi-language applicationsAnsiString, sometimes called the long string, is the preferred type for most purposes.
String types can be mixed in assignments and expressions; the compiler automatically performs required conversions. But strings passed by reference to a function or procedure (as var and out parameters) must be of the appropriate type. Strings can be explicitly cast to a different string type (see Typecasts).
The reserved word string functions like a generic type identifier. For example,var S: string;creates a variable S that holds a string. In the default {$H+} state, the compiler interprets string (when it appears without a bracketed number after it) as AnsiString. Use the {$H-} directive to turn string into ShortString.
没说ansistring类型可能变为string类型
WideString 功能上类似于AnsiString,但它是由WideChar字符组成的,也就是。 Str1:string;// 编译器认为S的类型是AnsiString
当然,能用编译开关$ H来将AnsiString 类型定义为ShortString,当$ H编译开关的值为负时,S变量
是ShortString类型;当$ H编译开关的值为正时(缺省情况),字符串变量是AnsiString 类型。
var
str: string; {定义}
begin
str := '万一'; {赋值}
ShowMessage(IntToStr(Length(str))); {长度是: 4}
end;--------------------------------------------------------------------------------
//长字符串 AnsiString; 在当前版本(2007)中的默认状态下, String 就是 AnsiString
var
str: AnsiString;
begin
str := '万一';
ShowMessage(IntToStr(Length(str))); {长度是: 4}
end;
ansistring变成了string
也就是说ansistring类型不是一个类了,已经
没有任何方法
例如ansistring.c_str();
现在在我的delphi中
如果a:AnsiString;
a.xxx
是出不来任何方法的。这也对?
也就是说所有方法和属性都出不来了。
还是说我记忆混淆了,将bcb和delphi混了?另外不是说string可能为ansistring,可能为shortstring
那么我这里的ansistring=string。最终=shortstring?
s:string[20]这时string是shortstring。
System.string不是类么?.NET平台下它就是类啊
AnsiString -System.String只是说明在System单元中把AnsiString定义成和String一样
就等于
Type
AnsiString = String;
而delphi中的string本身就不是一个类.
在help中说明中看到:它是一个指针,但在前面保存了4个字节的引用计数和4个字节的分配内存的长度.