小编Ken*_*ran的帖子

MSG 结构的时间成员是什么格式?

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 代表什么的文档。是秒、毫秒还是纳秒?它从历史的哪一点开始计算?

winapi windows-messages

4
推荐指数
1
解决办法
725
查看次数

编译器生成的Cruft

我试图使用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)

c# compiler-construction recovery name-mangling

3
推荐指数
1
解决办法
2371
查看次数

跨平台提示,技巧和陷阱

如果你曾经在一个跨平台开发项目上工作,那么考虑开始一个人,你对某人(比如我自己)有什么建议?例子:

  • 什么有用?
  • 什么没有?
  • 你遇到了什么问题,你是如何解决的?
  • 您是否希望在所有平台上实现一致的外观和功能,或者尝试利用每个平台的优势?
  • 您使用了哪些语言和跨平台库?他们是否符合他们的要求?
  • 它是桌面,移动或基于Web的应用程序吗?

cross-platform

3
推荐指数
1
解决办法
284
查看次数

如何使用TXMLDocument为每个节点添加名称空间前缀

我使用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行生成的代码.

xml delphi xml-namespaces txmldocument

3
推荐指数
1
解决办法
8868
查看次数

替换类型检查的条件链

今天我偶然发现了一些类似于以下内容的代码:

  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)

c#

3
推荐指数
1
解决办法
206
查看次数

以编程方式从表单中删除TChart

我正在寻找正确的方法来删除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对象仍然存在(直到父窗体被销毁).有没有具体的方法来做到这一点?谢谢

delphi teechart

1
推荐指数
1
解决办法
578
查看次数

如何将Del,Esc或Tab键与THotkey组件一起使用?

Delphi7 THotkey组件(来自Win32选项卡)不允许输入这些键:Del,Esc,Tab.即,在运行时您关注THotkey控件,您将这些键键入控件,但控件不显示(记住)它们.

也许某种程度上可以将这些键(Del,Esc,Tab)输入THotkey控件?

delphi

0
推荐指数
1
解决办法
442
查看次数

从.NET到Delphi,Delphi上的ERP

我学过.NET编程.我开始(严肃)编程已经4年了,我获得了VBA,JavaScript但主要是C#的经验.我花了很多时间试图掌握良好的编码实践,面向对象等.

现在终于有了工作.这项工作是每天修复/升级ERP.创建报告,有时可能是新的东西.我完全没有Delphi的经验,没有动力去学习它,特别是当人们搬到时.来自Delphi,而不是反向,我的经理期望:)

问题是,是否有任何工具可以编写C#代码并编译到此对象pascal或其他任何内容中.提前致谢.

.net c# delphi

-7
推荐指数
5
解决办法
2349
查看次数