Delphi中from.tag和edit.tag这两个属性指的是啥呀,具体有啥用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi中from.tag和edit.tag这两个属性指的是啥呀,具体有啥用?相关的知识,希望对你有一定的参考价值。
这个属性用来保存你所需要的一些数据什么的都可以,也可以保存字符串什么的,也就是此窗体或控件的一些用得着的数据。比如你在一个控件数组中(图片框控件数组),要达到将点击过的控件不再能进行点击操作,就可以在此INDEX的控件的TAG属性中添加上数据(PICTURE1(INDEX).tag=1),下次在点击时只要检测是否此控件的TAG属性为“1”就行了。就算是省掉了一个变量,而且记什么数据都可以,而且也省去了控件与变量之间的联接的操作。再比如也能记录一下你对此控件所进行的上一次操作什么的,比如你按过什么键,你可以将你此次按过的键值记录在TAG中,当下次再进行按键时检测上次是何操作,这个属性用好了也满好的。由于各个控件的tag初始值都是0,所以举个简单的例子,
例如用button2按键判断button1按键是否按下过:
procedure TForm1.Button1Click(Sender: TObject);
begin
button1.tag:=1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if button1.tag=0 then
showmessage('button1没有按下过')
else
showmessage('button1按下过');
end; 参考技术A 这两个属性可以用来存放一些用户数据。
我经常用他来存放一个指针或是整型变量。
Delphi中的EProgrammerNotFound异常?
【中文标题】Delphi中的EProgrammerNotFound异常?【英文标题】:EProgrammerNotFound exception in Delphi? 【发布时间】:2011-01-06 05:57:00 【问题描述】:在 Delphi 2009 中,SysUtils.pas 在第 425 行包含此内容:
EProgrammerNotFound = class(Exception);
这仅仅是easter egg 还是什么严重的问题?
何时应引发此异常?
它是否也存在于 Delphi Prism 和/或 Free Pascal 中?
问:这个异常类是否仍然在 Delphi(目前是 XE7)中声明? A:是的,甚至是documented!
指示软件故障的非标准方式。
您可以使用 EProgrammerNotFound 作为替代来指示软件 运行时检测到的故障。
【问题讨论】:
这个异常最近在一个answer关于Androids UserManager.isUserAGoat()函数中被提及 System.SysUtils.EProgrammerNotFound XE7 我认为这种设计模式应该有一个正式的名称。我在这里也看到了:YourCodeSucksException 【参考方案1】:起源是有争议的,但它已经为人所知了一段时间...... Marco Cantu 在“德尔福有趣的一面”会议上开玩笑说。 IMO,应该更频繁地使用它;-)
继续阅读:http://wings-of-wind.com/2010/01/12/best-programming-feature-ever/http://blog.barrkel.com/2008/11/reference-counted-pointers-revisited.html
PS:我不认为它存在于 Delphi Prism、FreePascal 或 C# 中(但它应该存在)。 <G>
【讨论】:
【参考方案2】:对于程序员,引用的不是坐在 Delphi 后面的程序员。我认为这是因为他们在 D2009 及更高版本中计划(从未使用它不知道它是否有效)每个对象都是可等待的。
【讨论】:
其实是可以用的。您可以将任何对象传递给TMonitor.Enter
和TMonitor.Exit
。而且我不确定它是否是复活节彩蛋......
等待的对象与程序员或是否被发现有什么关系?什么程序员是被引用?【参考方案3】:
它与要求程序员必须链接到exe文件的“fix-inline”技术结合使用;-)
【讨论】:
【参考方案4】:我是程序员,难道我是个例外吗?
Marco Cantù 还在他的书“Delphi 2009 手册”-第 242 页中描述了这一点。他说在 VCL 源代码中从来没有开玩笑。
【讨论】:
【参考方案5】:它在 Delphi 2009 中引入,在 Delphi 2010 中仍然存在,recently 在internet 上获得了一些more 的关注。
我认为这是一个复活节彩蛋,类似于“EBCAK”(椅子和键盘之间的错误)和skipping of Delphi version number 13。
EProgrammerNotFound
在 SysUtils 单元的 Win32 分支中声明,但未在 RTL 或 VCL 中的任何地方使用 在 Delphi Prism 中不存在 在 Delphi 2009 中引入,因此在 VCL.NET 中不存在 目前(版本 3.5)在 .NET 框架中没有类似的东西(不知道为什么,这些家伙 do have humour)我不认为 EProgrammerNotFound 实际上是要使用的,但是既然它在那里,人们会开玩笑地使用它(类似于在其他人中放置一个流浪的“const False = True; True = not False;”源代码)。
--杰罗恩
【讨论】:
嗯,程序员不仅是一个人,也是一个设备(用于编程,例如嵌入式设备的闪存)。我在这里闻到 iPhone 的味道吗?不,那么它将在 IDE 源代码中,而不是 sysutils。 EBCAK?我总是听到它表示为PEBKAC。 (键盘和椅子之间存在问题)。【参考方案6】:这只是漫长的一天的结果,我们有点头晕目眩。很多很多年(自从我加入团队以来),我们总是开玩笑说用类似的消息替换编译器中的一些错误消息,以替换最常见的错误之一。在内部,我们总是对不同的事情和人(主要是团队本身)开玩笑和取笑。如果你没有幽默感,你就注定要早早死去。
这是一次简单的对话;
“哦,你应该在那个函数中引发 EProgrammerNotFound 异常。” “哈哈!我们应该添加那个例外,看看谁注意到了。” “我想知道为什么会有多少猜测?”
所以,我想我只能说,“你们都玩到我们手里了 ;-)... Buwahahaha!pwned!”
【讨论】:
这不是 Tron 中最常见的异常吗? 有这样的例外是很合理的。我一直将此异常视为 ENotImplementedException @stanleyxu2005,为此您可以使用ENotImplemented
异常。
我有一个自定义的EProgrammerException
。当代码洞察力向我显示EProgrammerNotFound
时,我正在输入代码以完成EProgr...
。遗憾的是我不能使用EProgrammerNotFound
,因为我的EProgrammerException
是EInvisibleException
的后裔;因为它意味着断言失败和EAbort
异常之间的交叉(我发现一个程序员搞砸了,我要在这里停下来)。【参考方案7】:
它是编译器“语法错误:程序员预期”的运行时模拟。 ;>
【讨论】:
您应该已经看到编译器字符串本地化为 Jive 的构建!【参考方案8】:这是一种自我描述的笑话,你可以试试这段代码
raise EProgrammerNotFound.Create('Jack is away');
或
raise ENotImplemented.Create('May be in future this will work');
以上在 Delphi 10 Seattle 有效。
【讨论】:
以上是关于Delphi中from.tag和edit.tag这两个属性指的是啥呀,具体有啥用?的主要内容,如果未能解决你的问题,请参考以下文章