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; 谢谢大家!
function getpinyin(hzchar:string):string;//到这里程序出错没错呀? 你仔细检查看看是不是上一行的错误,比如落了分号之类的低级错误Form1.MyProc; // 这里调用 还有你这里的Form1.MyProc只是打个比方对吧?实际上就是Form1.getpinyin(hz:string)是吗? 如果不是的话还需要在unit1里有才行呀!(这不是废话吗?)
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;
//我上面的代码是举例,因为你定义的是函数,开头要用function function TForm1.getpinyin(hz:string):string; begin ~~~~~~变量名不相符 // 实现代码 end;procedure TForm2.button1Click(sender: Tobject); var MyStr: string; begin MyStr:= Form1.getpinyin('test'); // 这里调用 end;
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; 我再仔细检查检查吧!你们真的很热情! 很感激你们!
在这调用是要注意form1有没有创建了 procedure TForm2.button1Click(sender: Tobject); begin Form1.getpinyin('test'); // 这里调用 end;报什么错,说说看,不应该出错的
procedure TForm1.getpinyin(hzchar:string):string; ~~~~~~~~~这里应该用 function begin // 实现代码 end;
interface下use unit2
如在代码段则在
implementation下use unit2
use
utit1;
且在unit1定义的函数不能为private类型的.
...
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;
如果你定义成你 form中,那要定义成public的,并且用之前要先创建这个form的实离;
才能调用;
...
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;
谢谢大家!
你仔细检查看看是不是上一行的错误,比如落了分号之类的低级错误Form1.MyProc; // 这里调用
还有你这里的Form1.MyProc只是打个比方对吧?实际上就是Form1.getpinyin(hz:string)是吗?
如果不是的话还需要在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;
function TForm1.getpinyin(hz:string):string;
begin ~~~~~~变量名不相符
// 实现代码
end;procedure TForm2.button1Click(sender: Tobject);
var
MyStr: string;
begin
MyStr:= Form1.getpinyin('test'); // 这里调用
end;
十分感谢你的大力支持!
我的做法跟你的一样啊!
就时在: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;
我再仔细检查检查吧!你们真的很热情!
很感激你们!
procedure TForm2.button1Click(sender: Tobject);
begin
Form1.getpinyin('test'); // 这里调用
end;报什么错,说说看,不应该出错的
~~~~~~~~~这里应该用 function
begin
// 实现代码
end;
问题已经得到解决,就象你所说。