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]
因此,你的比较不会返回真

解决方案 »

  1.   

    这个!是这样吧。应该与你传送函数有关。它传送过来的有可能是一个指针!OK?只是指向首地址
    或者返回的是常量字符串!当你把它传给STRING类型时就转成STRING类型了,多态性吧。呵呵。这是小问题!经验就是这么出来 的。。努力吧。
      

  2.   

    更正一下:
    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]
    因此,你的比较不会返回真 
      

  3.   

    改成 function xxx(var a:string); 试试看,用变参可能可以,再不行试
    function xxx(const a:string); 
      

  4.   

    我是直接这样用的 
    c:string;
    c:='aaa';
    xxx(c);
    为什么xxx传入的串没有串头信息?
    我传入的是整个串呀?
      

  5.   

    xxx中你是使用一个变量与一个值'aaa'作比较!
    而并不是把c(c是变量)传进来和那个变量比较值和存储值的变量是不同的
      

  6.   

    赞成 zwjchina(蒲石) 的说法!
      

  7.   

    to all  本人上机将最上面那两个程序调试了一下,发现毫无问题,
      b=a为true
      只是delphi优化器将showmessage给优化掉了;
      建议将
      if b=a then showmessage('hi');
      写成
      if b=a then
        showmessage('hi');这样容易看调试运行状态不知上面的朋友们是怎样调试的;另外
      建议上面那些夸夸其谈的高人们请好好想想问题,不要给人以误导;一点愚见
      

  8.   

    比较2个字符串用comparetext(),不分大小写的,返回植是integer类型!~
    你可以试试这个啊!
      

  9.   

      
      procedure xxx(a:string);
    var 
      b:string;
    begin
      b:='aaa';
      if comparestr(b,a) = 0 then then showmessage('hi');
    end;
     
      

  10.   

    根本就是正确的,
    procedure xxx(a:string);
    var 
      b:string;
    begin
      b:='aaa';
      if b=a then showmessage('hi');
    end;
    会showmessage的,绝对没错,我刚测试了。
      

  11.   

    我试了一下发现  可以执行showmessage('hi');,为什么?  procedure xxx(a:string);
    var 
      b:string;
    begin
      b:='aaa';
      if b=a then showmessage('hi');
    end; 
      

  12.   

    各位老大,你们的理论都很高明,可是事实是检验真理的唯一标准,我试了一下,根本就没有问题,可以执行Show...
      

  13.   

    奇怪了,我却不显示showmessage的内容!
    zwjchina(蒲石) ,belief888(信仰)你们说呢? 
      

  14.   

    to
    charlyisme(John)你是在单步时显示的?????那样会被优化掉;
      

  15.   

    我试了一下,还是不显示showmessage的内容。