Windows 消息传递系统将发布时间作为 DWORD 分配给每条消息。
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time; // <---
POINT pt;
} MSG, *PMSG, *LPMSG;
Run Code Online (Sandbox Code Playgroud)
但是我找不到任何说明 DWORD 代表什么的文档。是秒、毫秒还是纳秒?它从历史的哪一点开始计算?
我试图使用Reg Gate的Reflector从程序集中恢复源代码.原始资源利用了几个C#3.0功能,这使得恢复有点困难.例如,这里是匿名类型的恢复源.弹出的第一件事是类标识符中的<> in.运行时类型命名规则显然比设计时规则更自由.很公平.简单的搜索和替换将解决这个问题.我必须注意哪些其他编译器修改以及如何处理它们?
[DebuggerDisplay(@"\{ OverrideType = {OverrideType}, EntityType = {EntityType} }", Type="<Anonymous Type>"), CompilerGenerated]
internal sealed class <>f__AnonymousType1<<OverrideType>j__TPar, <EntityType>j__TPar>
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private readonly <EntityType>j__TPar <EntityType>i__Field;
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private readonly <OverrideType>j__TPar <OverrideType>i__Field;
[DebuggerHidden]
public <>f__AnonymousType1(<OverrideType>j__TPar OverrideType, <EntityType>j__TPar EntityType)
{
this.<OverrideType>i__Field = OverrideType;
this.<EntityType>i__Field = EntityType;
}
[DebuggerHidden]
public override bool Equals(object value)
{
var type = value as <>f__AnonymousType1<<OverrideType>j__TPar, <EntityType>j__TPar>;
return (((type != null) && EqualityComparer<> <<OverrideType>j__TPar>.Default.Equals(this.<OverrideType>i__Field, type.<OverrideType>i__Field)) && EqualityComparer<<EntityType>j__TPar>.Default.Equals(this.<EntityType>i__Field, type.<EntityType>i__Field));
}
[DebuggerHidden]
public override int GetHashCode()
{
int num = -338316509; …Run Code Online (Sandbox Code Playgroud) 如果你曾经在一个跨平台开发项目上工作,那么考虑开始一个人,你对某人(比如我自己)有什么建议?例子:
我使用XML绑定向导来创建TXMLDocument的后代.此类生成的文件将在根节点中声明命名空间,并为文档的其余部分创建简单,朴素的节点.
<?xml version="1.0"?>
<RootNode xmlns="URL" xmlns:xsi="URL" xsi:schemaLocation="URL">
<SomeNode>
<AnotherNode>Value</AnotherNode>
</SomeNode>
</RootNode>
Run Code Online (Sandbox Code Playgroud)
我完全没有阅读或验证这一点.但是,现在发送这些文件的处理器要求每个节点都有前缀的命名空间,以便正确处理文件.
<?xml version="1.0"?>
<NS:RootNode xmlns:NS="URL" xmlns:xsi="URL" xsi:schemaLocation="URL">
<NS:SomeNode>
<NS:AnotherNode>Value</NS:AnotherNode>
</NS:SomeNode>
</NS:RootNode>
Run Code Online (Sandbox Code Playgroud)
如何使用TXMLDocument后代完成此操作?我希望它不涉及手动编辑10000行生成的代码.
今天我偶然发现了一些类似于以下内容的代码:
if (myObject is MyClass1)
myOtherObject = new MyOtherClass1(myObject);
else if (myObject is MyClass2)
myOtherObject = new MyOtherClass2(myObject);
else if (myObject is MyClass3)
myOtherObject = new MyOtherClass3(myObject);
else if (myObject is MyClass4)
myOtherObject = new MyOtherClass4(myObject);
else if (myObject is MyClass5)
myOtherObject = new MyOtherClass5(myObject);
else if (myObject is MyClass6)
// ...
Run Code Online (Sandbox Code Playgroud)
我发现这有点难以维护,并希望用不那么麻烦的东西来代替它.我有什么选择?
到目前为止,我已经考虑过使用字典的表驱动方法,但我不确定这是否是最佳选择.
// Not even sure this is valid syntax.
foreach (myClass in classes)
if myObject is myClass
new classes[myClass](myObject);
Run Code Online (Sandbox Code Playgroud)
还有其他想法吗?
更新
这里没有详细介绍这些类的基本结构:
MyBaseClass MyOtherBaseClass
| |
-MyClass1 …Run Code Online (Sandbox Code Playgroud) 我正在寻找正确的方法来删除TChart并释放所有内存.我正在使用带有标准TeeChart 7的Delphi2007
我以编程方式创建TChart:
var parentform: TForm;
begin
newchart:= TChart.Create(parentform);
newchart.Parent:= parentform;
...
Run Code Online (Sandbox Code Playgroud)
然后,我想从表单中删除图表(不关闭表单本身),但我只得到图表变为空白并保留在表单上:
newChart.FreeAllSeries;
FreeAndNil(newChart);
Run Code Online (Sandbox Code Playgroud)
如果我使用
NewChart.Parent := nil,
Run Code Online (Sandbox Code Playgroud)
我不再看图表,但我认为TChart对象仍然存在(直到父窗体被销毁).有没有具体的方法来做到这一点?谢谢
Delphi7 THotkey组件(来自Win32选项卡)不允许输入这些键:Del,Esc,Tab.即,在运行时您关注THotkey控件,您将这些键键入控件,但控件不显示(记住)它们.
也许某种程度上可以将这些键(Del,Esc,Tab)输入THotkey控件?
我学过.NET编程.我开始(严肃)编程已经4年了,我获得了VBA,JavaScript但主要是C#的经验.我花了很多时间试图掌握良好的编码实践,面向对象等.
现在终于有了工作.这项工作是每天修复/升级ERP.创建报告,有时可能是新的东西.我完全没有Delphi的经验,没有动力去学习它,特别是当人们搬到时.来自Delphi,而不是反向,我的经理期望:)
问题是,是否有任何工具可以编写C#代码并编译到此对象pascal或其他任何内容中.提前致谢.