怎样列举以WM_或其它MB_等开头的常量?
常量在Message.pas中定义.
我见过可以列举的软件.但不知怎做.

解决方案 »

  1.   

    Find in files 输入WM_回车//个人觉得通过程序列举这些常量似乎不可能,等待高手回答。
      

  2.   

    当然,如果你愿意写一个查找工具的话是可以的。我说的似乎不可能是指,不搜索windows.pas的字符串,而是通过查找全局内存中的消息id而得到消息名称
      

  3.   

    这些不都是常量么?自己搜索出来(message.pas)放在自己的文件里不就完事了?
      

  4.   

    难道我用过的那个软件是自已将常量找出来然后再读出来??
    目前我找到的是将一个杖举类型的值列出来,在这个TypInfo.pas里面.
      

  5.   

    在Delphi开发指南中有说明如果列出枚举类型的值。具体是那一章就不记得了,在20与22章之间吧
      

  6.   

    给个思路你
    定义一个record类型,例如
    type 
    PConstRecord=^TConstRecord;
    TConstRecord=record
      Name:ShortString;
      ID:Cardinal;
     end;
    然后你读入messages.pas文件,每读取一个结构就在堆上分配一个PConstRecord,并将名字和值放入ID中.读完了之后,将你所整理的PConstRecord放入一个文件中,以后要用就用你生成的这个文件,不必每次使用Messages.pas中读.同时你也可以先排序,并插入一些无意义的内容以便对齐(例如假设有消息编号为:1,2,5,6,你自己插入个无意义的3,4,来保证每个都有效),这样以后读入到TList中只需要 以MyList[Index]的语法就可以以O(1)的速度快速找到所对应的字符串消息了. 不过这样空间换时间的方法有点过了,你也可一采取其他的搜索方法,如二叉树,散列表都是不错的
      

  7.   

    多谢 Eastunfail(浴血雏龙)==(恶鱼杀手) 的帮助.其它人有没有更好的办法?