Z
ZHC
Unregistered / Unconfirmed
GUEST, unregistred user!
发现Delphi 6.0中的一个bug
版本delphi6.0(sp1)
操作系统:windows2000中文专业版(sp2)
我用的一个控件在运行时程序总是出错,经过跟踪发现该控件在调用wininet中的函数
ReadUrlCacheEntryStream总是不能正常运行,我百思不得其解,耗费了我3个小时才发现问题。
查看msdn,该函数的C++语言定义为:
BOOL ReadUrlCacheEntryStream(
; ; HANDLE hUrlCacheStream,
; ; DWORD dwLocation,
; ; LPVOID lpBuffer,
; ; LPDWORD lpdwLen,
; ; DWORD dwReserved
);
而此函数在delphi6中wininet.pas文件中的定义为:
function ReadUrlCacheEntryStream(hUrlCacheStream: THandle;
; dwLocation: DWORD; var lpBuffer: Pointer;
; var lpdwLen: DWORD; Reserved: DWORD): BOOL; stdcall;
; {$EXTERNALSYM ReadUrlCacheEntryStream}
大家注意第三个参数定义var lpBuffer: Pointer,这里多了一个var,如果使用传址方式传递指针lpBuffer,实
际传给函数的是指针的指针,也就是指向lpBuffer的指针,而不是lpBuffer指针本身,程序自然无法运行.
我把var去掉,正确定义如下:
function ReadUrlCacheEntryStream(hUrlCacheStream: THandle;
; dwLocation: DWORD; lpBuffer: Pointer;
; var lpdwLen: DWORD; Reserved: DWORD): BOOL; stdcall;
; {$EXTERNALSYM ReadUrlCacheEntryStream}
重新编译wininet.pas文件,程序能够可以正常运行了。
不知我以上的解释是否正确,请大家赐教,唉!delphi6已经出了一个补丁包了,
结果还是这么多错误,我今天刚一编程就遇到了问题,不知以后还会遇到什么稀奇古怪的事情。
版本delphi6.0(sp1)
操作系统:windows2000中文专业版(sp2)
我用的一个控件在运行时程序总是出错,经过跟踪发现该控件在调用wininet中的函数
ReadUrlCacheEntryStream总是不能正常运行,我百思不得其解,耗费了我3个小时才发现问题。
查看msdn,该函数的C++语言定义为:
BOOL ReadUrlCacheEntryStream(
; ; HANDLE hUrlCacheStream,
; ; DWORD dwLocation,
; ; LPVOID lpBuffer,
; ; LPDWORD lpdwLen,
; ; DWORD dwReserved
);
而此函数在delphi6中wininet.pas文件中的定义为:
function ReadUrlCacheEntryStream(hUrlCacheStream: THandle;
; dwLocation: DWORD; var lpBuffer: Pointer;
; var lpdwLen: DWORD; Reserved: DWORD): BOOL; stdcall;
; {$EXTERNALSYM ReadUrlCacheEntryStream}
大家注意第三个参数定义var lpBuffer: Pointer,这里多了一个var,如果使用传址方式传递指针lpBuffer,实
际传给函数的是指针的指针,也就是指向lpBuffer的指针,而不是lpBuffer指针本身,程序自然无法运行.
我把var去掉,正确定义如下:
function ReadUrlCacheEntryStream(hUrlCacheStream: THandle;
; dwLocation: DWORD; lpBuffer: Pointer;
; var lpdwLen: DWORD; Reserved: DWORD): BOOL; stdcall;
; {$EXTERNALSYM ReadUrlCacheEntryStream}
重新编译wininet.pas文件,程序能够可以正常运行了。
不知我以上的解释是否正确,请大家赐教,唉!delphi6已经出了一个补丁包了,
结果还是这么多错误,我今天刚一编程就遇到了问题,不知以后还会遇到什么稀奇古怪的事情。