我有一个用于登录我的应用程序的辅助表单,我有一个程序AddLine
:
type
TFormLog = class(TForm)
Memo1: TMemo;
private
procedure AddLine(aString: String);
{ Private declarations }
public
{ Public declarations }
end;
var
FormLog: TFormLog;
implementation
{$R *.dfm}
{ TFormLog }
procedure TFormLog.AddLine(aString: String);
begin
Memo1.Lines.Add(aString);
end;
当我使用自动完成时(Ctrl-Shift_C)Delphi将AddLine
过程添加到private
部分,所以当我尝试
FormLog.AddLine('some text');
但将声明移至公共区域并没有帮助:
type
TFormLog = class(TForm)
Memo1: TMemo;
private
{ Private declarations }
public
{ Public declarations }
procedure AddLine(aString: String);
end;
我仍然遇到编译错误,AddLine
过程未解析。我确实将日志单元添加到uses
子句中,因此Formlog
在主窗体中是已知的
尝试直接访问TMemo具有相同的效果。
如何修复我的代码,以便我可以从主窗体中将文本添加到日志表单中?
答案 0 :(得分:1)
公共成员可以从其他单位的代码中看到。您错误的可能解释包括:
你也说:
尝试直接访问
TMemo
具有相同的效果。
同样,由于已发布可见性,因此可从单元外部看到。显然,类似于上面第2或第3项的内容正在发生。
底线是可以从任何代码中看到公共(和已发布)成员。问题在于您的代码(只有您可以看到),您应该尝试通过询问代码的问题来解决这个问题,而不是担心编译器有缺陷。
在更广泛的层面上,问题中提供的代码将方法声明为private
。很明显,该单位外部无法看到该成员。作为一般规则,您应该提供您要求帮助的代码。
此外,如果您询问编译器错误,请逐字报告错误。描述您对错误的理解是混淆的丰富来源。人们误解编译器错误是很常见的。如果他们描述了他们的误解,那么沟通就会破裂。逐字报告编译器错误,然后误解的范围为零。
答案 1 :(得分:-1)
我认为AddLine在VCL Delphi的某些地方是私有的。
因此尝试更改过程/方法名称 例如,一个名称完全不同,因为你的名字hehehe,并看到错误发生测试访问变量或对象到proc /方法
或为测试创建一个新项目
注意:如果ADDLINE是MEMO的一种方法,那么编译器无法解析将要执行的调用(我相信就是这样)