意思是要在unit1自定义的函数,如何才能在unit2调用它?我在public定义
老是出错。应该怎么些了???

解决方案 »

  1.   

    如果在声明段需要引用则在
    interface下use unit2
    如在代码段则在
    implementation下use unit2
      

  2.   

    在unit2中加入:
    use
      utit1;
    且在unit1定义的函数不能为private类型的.
      

  3.   

    unit unit1;
    ...
      TForm1 = class(TForm)
      public
        procedure MyProc;
      end;
    ...procedure TForm1.MyProc;
    begin
      // 实现代码
    end;unit unit2;
    ...
      TForm2 = class(TForm)
    ...
    var
      Form2: TForm2;implementationuses Unit1;{$ *.DFM}procedure TForm2.button1Click(sender: Tobject);
    begin
      Form1.MyProc; // 这里调用
    end;
      

  4.   

    在unit1中定义的时候要定义成全局的,并保证你的unit是全局存在的,你才能调用,这个时候是声明在你的form之为的,但是要在interface和impletion之间;
    如果你定义成你 form中,那要定义成public的,并且用之前要先创建这个form的实离;
    才能调用;
      

  5.   

    unit unit1;
    ...
      TForm1 = class(TForm)
      public
       function getpinyin(hzchar:string):string;//到这里程序出错
         end;
    ...procedure TForm1.getpinyin(hz:string):string;
    begin
      // 实现代码
    end;unit unit2;
    ...
      TForm2 = class(TForm)
    ...
    var
      Form2: TForm2;implementationuses Unit1;{$ *.DFM}procedure TForm2.button1Click(sender: Tobject);
    begin
      Form1.MyProc; // 这里调用
    end;
    谢谢大家!
      

  6.   

    function getpinyin(hzchar:string):string;//到这里程序出错没错呀?
    你仔细检查看看是不是上一行的错误,比如落了分号之类的低级错误Form1.MyProc; // 这里调用
    还有你这里的Form1.MyProc只是打个比方对吧?实际上就是Form1.getpinyin(hz:string)是吗?
    如果不是的话还需要在unit1里有才行呀!(这不是废话吗?)
      

  7.   

    unit unit1;
    ...
      TForm1 = class(TForm)
      public
       function getpinyin(hzchar:string):string;//到这里程序出错
         end;            ~~~~~~~~~  
    ...procedure TForm1.getpinyin(hz:string):string;
    begin                     ~~~~~~变量名不相符
      // 实现代码
    end;unit unit2;
    ...
      TForm2 = class(TForm)
    ...
    var
      Form2: TForm2;implementationuses Unit1;{$ *.DFM}procedure TForm2.button1Click(sender: Tobject);
    begin
      Form1.getpinyin('test'); // 这里调用
    end;
      

  8.   

    //我上面的代码是举例,因为你定义的是函数,开头要用function
    function TForm1.getpinyin(hz:string):string;
    begin                     ~~~~~~变量名不相符
      // 实现代码
    end;procedure TForm2.button1Click(sender: Tobject);
    var
      MyStr: string;
    begin
      MyStr:= Form1.getpinyin('test'); // 这里调用
    end;
      

  9.   

    to:fanction(op&&(C/C++))
      十分感谢你的大力支持!
    我的做法跟你的一样啊!
    就时在:public
             function getpinyin(hzchar:string):string;//这里出错呀!~
    怪哉!
    function TForm1.getpinyin(hz:string):string;
    begin                     ~~~~~~变量名不相符
      // 实现代码
    end;
      其实这句时我大意写错的,但在我的代码没有错呀!·
    我是这样写的:
      unit unit1;
    ...
      TForm1 = class(TForm)
      public
       function getpinyin(hzchar:string):string;//到这里程序出错
         end;             
    ...procedure TForm1.getpinyin(hzchar:string):string;
    begin                     
      // 实现代码
    end;unit unit2;
    ...
      TForm2 = class(TForm)
    ...
    var
      Form2: TForm2;implementationuses Unit1;{$ *.DFM}procedure TForm2.button1Click(sender: Tobject);
    begin
      Form1.getpinyin('test'); // 这里调用
    end;
    我再仔细检查检查吧!你们真的很热情!
    很感激你们!
      

  10.   

    在这调用是要注意form1有没有创建了
    procedure TForm2.button1Click(sender: Tobject);
    begin
      Form1.getpinyin('test'); // 这里调用
    end;报什么错,说说看,不应该出错的
      

  11.   

    procedure TForm1.getpinyin(hzchar:string):string;
    ~~~~~~~~~这里应该用 function
    begin                     
      // 实现代码
    end;
      

  12.   

    谢谢:fancier(op&&(C(C++)
    问题已经得到解决,就象你所说。