我在Delphi中编写代码时遇到了问题。 即我无法访问Components,即使它们被声明并且我在上面的代码中使用它们(之前在程序中,现在我试图在函数中使用它们 - 也许这就是我不知道的原因,我不擅长德尔福)。 我做了几个屏幕让它看起来更清晰。 看一看。
http://imageshack.us/photo/my-images/135/weirddelphi3.png/“>
正如您在第一个屏幕上看到的那样,我遇到了编译器错误。它表示组件不存在,但在第三个屏幕上,您可以看到该组件存在。在第二个屏幕上我甚至可以使用这个组件(可以成功调用代码完成,但是如果我尝试在secondFunction的范围内调用它,我会得到如下错误: “由于源代码中的错误,无法调用代码完成” - 但这到底是什么错误?! )。如果我评论这两行(参考Edit7和Edit8),我可以毫无问题地运行程序。我真的无法弄清楚出了什么问题,如果有人能给我一些建议,我将不胜感激。我不想在这里发布整个代码,因为它需要大约300行,但是如果你需要知道别的东西来解决这个问题,那么请问我会告诉你..
我没有足够的声望点来发布超过2个超链接,因此您必须使用最后一个进行“复制和粘贴”:D
答案 0 :(得分:6)
问题是Edit7
是TForm1
类的一部分。 Edit7
以外的名称无法访问TForm1
。因此,您可以使用全局Form1
变量,并执行
function secondFunction(x: extended): extended;
var
paramA, paramB: extended;
begin
paramA := StrToFloat(Form1.Edit7.Text);
paramB := StrToFloat(Form1.Edit8.Text);
Result := paramA + paramB * sin(x);
end;
或者您可以制作secondFunction
课程的TForm1
部分:
function TForm1.secondFunction(x: extended): extended;
var
paramA, paramB: extended;
begin
paramA := StrToFloat(Edit7.Text);
paramB := StrToFloat(Edit8.Text);
Result := paramA + paramB * sin(x);
end;
但是你需要在secondFunction
类的声明中声明TForm1
,比如
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
function secondFunction(x: extended): extended;
end;
在单位的开头。