看资料不是说函数名会返回吗?
function test():string;
begin
ShowMessage('1');
result:='a';
ShowMessage('2');
test:='b';//这边也不返回?
ShowMessage('3');
end;

解决方案 »

  1.   

    函数的返回值必须通过resultfunction test():string;
    begin
    ShowMessage('1');
    result:='a';
    ShowMessage('2');
    test:='b';//这边也不返回?
    ShowMessage('3');
    end;
    你这个函数只会返回a
      

  2.   

    函数应该这样定义和调用function test():string;
    begin
      result:='a';
    end;
    procedure TForm1.Button17Click(Sender: TObject);
    var
      s:string;
    begin
      s:=test;
    end;
      

  3.   

    什么意思啊,
    你这个函数返回就是 a啊  result:='a';
    至于 test:='b';就看不懂了,
    要不就是给 test变量赋值
      

  4.   

    我记得用函数名可以返回的吧,难道和result冲突?
      

  5.   

    经实验,没问题,函数名可以返回function TForm1.test: string;
    begin
      result := 'sss';
      test := 'sfdsf';
    end;
    返回的是'sfdsf'
      

  6.   

    DELPHI 函数名 result 都可以返回
      

  7.   

    DELPHI 函数名 result 都可以返回
      

  8.   


    procedure TForm1.BitBtn3Click(Sender: TObject);
        function test(): string;
        begin
            ShowMessage('1');
            result := 'a';
            ShowMessage('2');
            test := 'b'; //这边也不返回?
            ShowMessage('3');
        end;
    begin
        ShowMessage(test);  //此时显示 'b'
    end;
      

  9.   

    DELPHI 函数名 result 都可以返回显示b是对的啊,以最后一个为准,呵呵
      

  10.   

    用函数名或result都可以返回值,但有一点与c/c++不同,程序不会在 
    函数名 := myresult;

    result := myresult;
    这样的语句处返回,而是顺序执行下去,除非碰到
    exit; abort; halt;之类的显示语句而c/c++会在
    return; return 10;这样的句子处返回调用点,而不执行函数在return后边的语句
      

  11.   


    是啊 我就这个意思 
    我看到很多地方都说 result不返回,函数名 可以返回  以为函数名 可以不加exit;
      

  12.   

    test := 'b';  
    相当于 
    result := 'b'; exit;
      

  13.   

    如果这样的话ShowMessage('3'); 应该不运行才对啊function test():string;
    begin
    ShowMessage('1');
    result:='a';
    ShowMessage('2');
    test:='b';//这边也不返回?
    ShowMessage('3');
    end;
      

  14.   

    这里没有一句是退出的意思,只是中间会出现提示框等待按OK确认而已,
    没有OK确认函数就会暂停,也就是还没有执行结束,那来的返回值
    所以最后返回值就是b只要记住,函数返回值的是最后一个运行的result (或者函数名)
      

  15.   

    函数名:=xxx 或 result:=xxx 一样
    都只是准备返回值,但是不是马上返回使用函数名不如result,因为万一以后函数名因为重构变化了,函数内部所以的 函数名:=xxx 都需要修改
    result就没有这个问题另外,如果 a:=函数名 也有歧义,是:直接使用返回值,还是 递归执行函数再获得返回值呢?
      

  16.   

    代码的简洁,的确差一点,尤其是在条件语句里
    if yyyy then
    begin
      result:=xxx;
      exit;
    end;
    不如c的:
    if (yyyy)
      return xxx;
    简洁