请问DELPHI6中字符串的引用计数的地方是不是变了呀?(50分)

  • 主题发起人 主题发起人 吴明星
  • 开始时间 开始时间

吴明星

Unregistered / Unconfirmed
GUEST, unregistred user!
var
str:string;
begin
str:='111';
ShowMessage('Count:'+IntToStr(PInteger(Integer(Str)-8)^));
end;
总是显示-1,这是怎么会事呀?
 
ShowMessage('Count:'+IntToStr(PInteger(strtoInt(Str)-8)^));
 
同意楼上的
字符变数值用
strToInt函数
 
来迟啦。楼上两位说得对。
 
你的这个str是局部变量
str:='111';
调用这个时,编译器会调用_LStrLAsg
试把str声明为全局变量或类的字段
就会出来1的结果,这是调用的是_LStrAsg
 
to 枪手哈特,无疯无禄:
我说的是要得到长字符串的引用计数。不是把Integer转换成String.

to xzgyb:
书上怎么没有这么说呀?是不是DELPHI6
 
to 枪手哈特,无疯无禄:
我说的是要得到长字符串的引用计数。不是把Integer转换成String.

to xzgyb:
书上怎么没有这么说呀?是不是DELPHI6与以前的版不一样呀?为什么会出现在这种情况
呀?
还有如果
S:STRING;
P:PCHAR;

S:=‘111’;
P:=PCHAR(S);
S:=‘222’;//S里的指针已经变了。但P指向的‘111’还在哟。也就是说还没释放。
        那它是怎么释放的呀?是不是如果是全局变量它就会不同了?


 
接受答案了.
 
后退
顶部