int i; TMemoryStream *b=new TMemoryStream; //Please add a breakpoint here, when the app run to here, use F8 to debug in steps. //在这句加个断点,当程序运行到这里时,用F8单步调试。(用F7我也没意见) b->Size=5; i=b->Size; //Stop here! Move you mouse pointer on the b.Size, and look what the value is? //What I saw was 0! What's matter? What do you see? But the i=5 is true, it's confusing , :P //在这里停一下,把鼠标移到 b.Size的Size上,看看这时他的值是多少? //我看到的居然是0!,怎么回事?你看到的是啥?但是这时i=5确实成立,多么令人迷惑,:P Label1->Caption=IntToStr(b->Size); Label2->Caption=IntToStr(i);
Delphi可以输入中文注释
另外,Delphi里的注释当然可以写汉语了,如果你那里有问题,看看是不是字体设置的不对
我也出现过这样的问题:你应该注意到在下列语句前会没有一个小经、绿点的,
i:=b.Size;Delphi 根本没有对它进行编译!!!!!!!!!!!!!!!
可能是优化的原因吧!你就麻烦一点多写几句!!!
^^^^^^^^^^^^^^^^^^^^^^^^^Delphi是可以用汉语注释的
^^^^^^^^^^^
伟大的发现!
比我上次发现的
"
哈哈哈!无意中的发现,CString 有GetLength(),竟没有SetLength(),MFC的功能实在是太强大了.(
"
还要伟大!
Label1.Caption:=IntToStr(b.Size);没错就可以了
而且分配内存也不用d.size
CTRL+F7?那不是Evaluate/Modify窗口吗?不过还是0。to plainsong(轻风):无论开不开优化,都是一样的现象。to shuixin13(心帆):你有没有调试我的代码啊?后面还有一句Label2.Caption:=IntToStr(i);呢,当然会有小蓝点啊。
我的Delphi6不能输入中文~~~to liaokuo(辽阔):确实,没错就可以了。但我实在想知道为什么,因为这个现象会干扰调试的正常进行,说不定什么时候自己写的代码也会有这个现象,那就难调试啦。b.Size会自动调用内存分配的。
TMemoryStream *b=new TMemoryStream;
//Please add a breakpoint here, when the app run to here, use F8 to debug in steps.
//在这句加个断点,当程序运行到这里时,用F8单步调试。(用F7我也没意见)
b->Size=5;
i=b->Size;
//Stop here! Move you mouse pointer on the b.Size, and look what the value is?
//What I saw was 0! What's matter? What do you see? But the i=5 is true, it's confusing , :P
//在这里停一下,把鼠标移到 b.Size的Size上,看看这时他的值是多少?
//我看到的居然是0!,怎么回事?你看到的是啥?但是这时i=5确实成立,多么令人迷惑,:P
Label1->Caption=IntToStr(b->Size);
Label2->Caption=IntToStr(i);
jinfeng_Wang(FanS) TTest是自己写的类,代码都在这里了,仔细看看吧。uwslxcs2(野狼):MemoryStream不是空的。pasl(阿龙1):我没有犯这种低级错误。你瞧瞧楼上8层以上的各位,也都没有犯这种错误。ilikeff8(迷茫) :你把代码改成CBuilder了啊?CBuilder里没有错啊?回头我试试。不过Delphi6里面是不正常的。不过你写的代码已经跟我的不一致了,TTest是从TMemoryStream派生的子类。vcshcn(黑色的星星):跟优化无关。多谢大家。问题仍未解决。
首先你的这种操作错误!
其次你的这个操作不会起作用!
具体的原因你查看delphi的帮助The size of TMemoryStream will change by
the Application Automatically!
TMemoryStream其实没有Size属性的,你在帮助里看到的是TStream.Size的说明吧?确实Size只是从TStream继承来的,但你仔细看看TMomeryStream.SetSize和TStream.Size是如何实现的,要看源码,不要看帮助,否则是难以明白怎么回事的。我来说明一下给Size赋值的过程好了,根据TStream的定义,写Size的时候会调用SetSize64, SetSize64又会调用SetSize, TStream.SetSize确实什么也没做(就像帮助里说的那样),但TMemoryStream重栽了SetSize, 所以调用的是TMemoryStream.SetSize, 而这个SetSize会调用SetCapacity, SetCapacity又会在调用SetPoint的时候调用Realloc改进缓冲区大小,这下你明白了吧?擦汗,天真热,希望不要再回答这种发言了。大侠们都春游去了?如果你感到我说的不对,请具体指出。
汉字输入,估计是输入法的问题,你用什么输入法。