最近发现windows.pas中的很多定义不全。而且也不是按照Vc的定义内容来划分。
比如
1、文件WinError.h中的很多错误定义在delphi中就找不到。
2、WinSvc.pas中的很多定义也不全。
3、delphi(7.0)对Windows API的定义似乎还是针对WinNT 4.0的API的,WinNT 5.0(Win2K & XP)以后新增的API都没有定义,这是个什么思路?(当然Vc 6.0还是针对WinNT 4.0的API)

解决方案 »

  1.   

    那等 D9看看。而且delphi里面有些定义还是错的。例如 wsprintf
      

  2.   

    用Delphi定义所有的 Windows API也没太大意义,毕竟用的只是一少部分,像未公开的API和一些未封装的,你可以自已实现接口。还有,Windows API函数不是都封装在Windows.pas中,像图形、Shell方面的在其它的pas中。
      

  3.   

    Delphi对API的封装不只是放在Windows API里,象ShellAPI, ShlObj, Graphics, Messages等等里面都有!
      

  4.   

    ShellAPI, ShlObj, Graphics, Messages ... 还有的是。但是都不全
      

  5.   

    呵呵,你够用不久可以了码,delphi只要封装它的vcl需要使用的win32 api!!
      

  6.   

    所谓VC不全是应该是指Windows还有很多未公开的API,这些东东如果不是专业的写商业软件,根本就不要去碰,没有任何好处。而对于SDK中公开了的API,VC都有定义。我所说的是:
    1、DELPHI为何不将全部SDK转换为其PAS代码;(至少PASCAL 7.0就将Win 3.x的SDK全部转成了pascal代码,但是到了Win32后又怎么这样了呢?其实对于一个Borland这样大公司而言,转个SDK根本没有什么成本支出,其不转一定是有其他神秘的原因。我关系的就是这个神秘原因。
    2、全面研读后,感觉Win2K的SDK不是WinNT的SDK的简单升级,而是复杂了2倍。(虽然其中的很多东东难得用得上)Borland对于WinNT的都不转全,Win2K的什么时候能期盼呢?
      

  7.   

    没什么特别原因,D7和D6只是换了个壳,编译器和VCL根本没动,打开个D6的pas文件看看注释中Copyright后面跟的时间就明白了,那时候的SDK没这些东西.这已经算好的了,它带的OpenGL.pas不还只停留在1993年吗?~~~别把Borland还当成当年的Borland,现在它可不算是家大公司了,虽然影响力还有.要说少东西,多了去了.再说就是以前Borland鼎盛的BC++时代又哪跟的上MS操作系统的更新?当年OWL对ODBC,OLE等的支持不也远远落后于MS的MFC吗.别忘了操作系统是MS的,比如有些头文件不过是操作系统代码的一部分.想看一些新东西的封装,别都指望Borland,去网上找找~~~比如
    http://www.delphi-jedi.orgwsprintf有错???
      

  8.   

    To Ehom:
    我在几个帖子里面讨论过这个错误的,呵呵~~~的确有错误
    1. wsprintf为了使用C风格的可变参数,就没有用stdcall调用约定,它是标准API中唯一使用cdecl调用约定的,
    2. wsprintf使用了C风格的可变参数,但是Delphi的wsprintf没有使用varargs关键字来修饰它有可变参数
      

  9.   

    Borland,都是旧的API
    新的在JEDI才有
    最新的就要自己修改VC的H过来用了http://lysoft.7u7.net