procedure xxx(a:string);
var
b:string;
begin
b:='aaa';
if b=a then showmessage('hi');
end;中a是以值的方式传进来内存中为[a][a][a]
而b是AnsiString,内存格式为 [串的头信息][a][a][a]
因此,你的比较不会返回真
var
b:string;
begin
b:='aaa';
if b=a then showmessage('hi');
end;中a是以值的方式传进来内存中为[a][a][a]
而b是AnsiString,内存格式为 [串的头信息][a][a][a]
因此,你的比较不会返回真
解决方案 »
- 有没有人用过 CBX 开发BS架构的程序?
- 在memo控件中不用scroll实现翻页
- 皮肤控件(skindata)与opendialog控件有冲突怎么办?一旦有皮肤控件(skindata)那么执行opendialog.Execute就出错!
- 图象显示问题
- 又一个delphi处女作!下载照样送分!提了改进方法的送高分!
- 如何使用copy函数
- 各位大虾有没有判断内存泄露的方法、因我的程序在运行时有报虚拟内存不够,我该怎样做
- 程序最小化,最大化和还原
- 我的delphi 6 为什么不能用数据库呢?
- 急!急!只有23分了
- 怎样用程把"c:""d:"共享呀?只讲读、完全!
- fastreport 每页最后一行没有顶到头就折行到下一页了,如何解决?
或者返回的是常量字符串!当你把它传给STRING类型时就转成STRING类型了,多态性吧。呵呵。这是小问题!经验就是这么出来 的。。努力吧。
procedure xxx(a:string);
var
b:string;
begin
b:='aaa';
if b=a then showmessage('hi');
end;中a是以值的方式传进来内存中为['a']['a']['a']
而b是AnsiString,内存格式为 [串的头信息]['a']['a']['a'][#0]
因此,你的比较不会返回真
function xxx(const a:string);
c:string;
c:='aaa';
xxx(c);
为什么xxx传入的串没有串头信息?
我传入的是整个串呀?
而并不是把c(c是变量)传进来和那个变量比较值和存储值的变量是不同的
b=a为true
只是delphi优化器将showmessage给优化掉了;
建议将
if b=a then showmessage('hi');
写成
if b=a then
showmessage('hi');这样容易看调试运行状态不知上面的朋友们是怎样调试的;另外
建议上面那些夸夸其谈的高人们请好好想想问题,不要给人以误导;一点愚见
你可以试试这个啊!
procedure xxx(a:string);
var
b:string;
begin
b:='aaa';
if comparestr(b,a) = 0 then then showmessage('hi');
end;
procedure xxx(a:string);
var
b:string;
begin
b:='aaa';
if b=a then showmessage('hi');
end;
会showmessage的,绝对没错,我刚测试了。
var
b:string;
begin
b:='aaa';
if b=a then showmessage('hi');
end;
zwjchina(蒲石) ,belief888(信仰)你们说呢?
charlyisme(John)你是在单步时显示的?????那样会被优化掉;