在Delphi中编写代码时遇到了问题。
就是说,即使我已经声明了组件并且我在上面的代码中使用了它们(以前在过程中,现在我正在尝试在函数中使用它们),但我无法获得它们的权限-也许这就是原因,我不知道,我不擅长Delphi)。
我做了几个屏幕,使其看起来更加清晰。
看一看。



http://imageshack.us/photo/my-images/135/weirddelphi3.png/“>

正如您在第一个屏幕上看到的那样,我遇到了编译器错误。它说该组件不存在,但是在第三个屏幕上您可以看到该组件存在。在第二个屏幕上,我什至可以使用此组件(可以成功调用代码完成,但是如果尝试在secondFunction的范围内调用它,则会出现如下错误:
“由于源代码中的错误而无法调用代码完成功能”-但是到底是什么错误呢? )。如果我注释涉及Edit7和Edit8的这两行,则我可以毫无问题地运行该程序。我真的不知道出什么问题了,如果任何人可以给我一些建议,将不胜感激。我不想在这里发布整个代码,因为这大约需要300行,但是如果您需要了解其他信息来解决这个问题,请问我会告诉您。

我没有足够的声誉点来发布两个以上的超链接,所以您必须对最后一个进行“复制并粘贴”:D

最佳答案

问题在于Edit7TForm1类的一部分。 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;

在单元的开头。

10-05 22:25