比如TextOut、ExtTextOut,其中都有PChar字符串指针参数,假使输出Text :PChar,从第i个开始输出: ExtTextOut(DC, x, y, 0, nil, Text[i], n, nil);//输出正常,Text[i] 指向Text的第i个字符的地址:Text[i] = Inc(Text, i) = @Text[i] TextOut(DC, x, y, Text[i], n);//编译不能通过,因为Text[i]是Char,但需要PChar参数:Text[i] 是第i个字符;@Text[i]才是第i个字符的地址,Text[i] = (@Text[i])^。必须:TextOut(DC, 0, 0, @Text[i], n)才行Text[i]在C++里是char * Text的第i个字符,Text + i在C++里是char * Text的第i个字符的地址!可在Delphi2009里,Text[i]居然有时是表示第i个字符的地址,有时是表示第i个字符!于是,开放数组、动态数组、指针类型转换、指针移动等与指针相关的操作,十分混乱。Delphi2009中,指针操作有些混乱。
解决方案 »
- SPComm如何获取缓冲区的数据,请高人帮忙修改下
- 为什么在DLL里的Indy UdpServer不能正常接收数据
- 大侠们帮帮忙,如何设置驱动文件的相对路径?
- 急需串口传送文件的实例代码或网址?在线等!
- 请大家帮忙 那里能找到Delphi 7.0的打包程序 最好能下载的
- 各位大哥帮帮小弟吧,我想在程序中获得另一个程序的窗口中的richedit中的text内容,现在我知道了这个窗口的句柄,要怎样才能得到那个rich
- 答对者,年薪:8万美元
- 能告诉我怎么做一个插件?
- 大家讨论一下关于TClientDataSet.ApplyUpdate的问题吧
- 关于delphi调试问题
- Cannot creat form. No MDI forms are currently active.
- 精度问题,好烦人
d2009的Char是WideChar,和char根本对不上,不懂你就不要胡说八道了另外,看样子你也搞不清delphi中用var/out/const修饰的参数都是怎么回事,以你的水平在c和delphi之间相互转换函数接口也是个问题
多谢你教导,否则AnsiChar和WideChar我还真不知道。不过,好象你连char * 还没明白。此外,貌似你连指针如何转换完全不懂!比如,DWORD *如何成为char *?拜托你!
你要是问“在不同endian的cpu上,char* 和 DWORD* 转换会有哪些差别”这种层次的问题,我还愿意回答一下。你自己搞不清的东西不代表别人也搞不清楚,何况是你的水平还不怎么样,问的都是些初学者的问题我在qc上提交了5个bug,其中4个已经open了
这两个是我自己发现的问题:
Alignment problem of local variable
A Compiler bug that calling method-type parameters
当然这两个是每个版本都有的bug,只是我前一段时间才发现。当然,这两个都是跟反汇编才找到的问题,你肯定看不懂
这两个是别人在盒子上提出来的问题,我确认了之后,虽然自己英文水平不怎么样,但还是代劳报告了一下:
Removal of Generics.Collections.TObjectDictionary<,> incorrect
Incorrect size of generic static multi-dimensional array type如果你说的确实是bug,我同样也不会吝惜自己的时间代劳报告一下。但是没办法,都是些你自以为是的基础知识对于你的问题,我只能建议你找一两本质量好点儿的入门教材,再遇到相关问题的时候,先好好读一读相关章节,不要把自己的无知当作delphi的bug
这样的变量你进行指针操作是不是有点难为delphi编译器嘛,将就下嘛,.net clr同样也做不好。
我是秋风