紧急请教(100分)

  • 主题发起人 主题发起人 jbostrich
  • 开始时间 开始时间
J

jbostrich

Unregistered / Unconfirmed
GUEST, unregistred user!
定义变量:g_hloghook: HHook;
g_hlastFocus:HWND;
赋值:g_hloghook:=NULL;
g_HLastFocus:=NULL;
编译时通过,但运行时显示错误对话框:无效变量类型转换,
逐步运行知错误在这儿,但不知为什么。
 
用下面的试试:
g_hloghook:=nil;
g_HLastFocus:=nil;
 
NULL 在 C/C++(区分大小写) 中表示空指针,实际上应是 0;
Null 在 Object Pascal(不区分大小写), 中是在 System.pas 中定义的 Variant 类型的
变量,OP 中 nil 代表空指针。
你的情况, HHook, HWND 类型实际上是 DWORD 类型,把它们置空只要赋 0 给它们就行了。
这样:
g_hloghook := 0;
g_HLastFocus := 0;
编译通过是因为 Variant 类型的变量可以代表(存储)多种类型的数据,具体请看帮助.
 
NULL,在Delphi6明确定义为一个函数.
function Null: Variant;
在Delphi5,
在Delphi4中定义为一个变量:

var Null: Variant;
如果将null赋值给任何其他非变体类型的变量都会产生一个异常.

在C中实际上使用了宏来表示.
在C中将H打头的类型转换到Delphi中,你应该统统作为整数来对待.别用NULL.
所谓Handle,就是序号.我就翻译成 "号第"或者是"号柄"
 
后退
顶部