【问题标题】:Delphi can't get text from TEditDelphi 无法从 TEdit 获取文本
【发布时间】:2011-05-08 18:21:28
【问题描述】:

我在 Delphi 中编写代码时遇到了一个问题。 即我无法访问组件,即使它们已声明并且我在上面的代码中使用它们(以前在程序中,现在我试图在函数中使用它们 - 也许这就是原因,我不知道,我不擅长德尔福)。 我做了几个屏幕让它看起来更清晰。 看看吧。

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

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

我没有足够的声望点来发布超过 2 个超链接,所以你必须对最后一个进行“复制和粘贴”:D

【问题讨论】:

  • 我给你 +5 代表让你开始。您的问题非常清晰易懂。
  • 就其价值而言,使用 80 位扩展数据类型获得的收益很少,损失的也很多。我会推荐 Double。
  • 以后请您在问题中发布代码。从屏幕截图中读取它很痛苦。
  • @David:嗯,但现在我们看到了编译器停止的红线,以及编译器的错误消息。我不知道您使用的是什么浏览器,但我使用将(缩小的)图像拖到新选项卡,以查看完整尺寸。

标签: delphi function


【解决方案1】:

问题在于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;

但是你需要在TForm1类的声明中声明secondFunction,比如

TForm1 = class(TForm)
private
  { Private declarations }
public
  { Public declarations }
  function secondFunction(x: extended): extended;
end;

在单元的开头。

【讨论】:

  • +1 或者他可以将表单实例作为参数添加到函数中。
  • @Lieven:好主意,但如果我是他(?),我也会将Edit7Edit8 重命名为更相关的东西.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 2014-08-03
相关资源
最近更新 更多