无法在互联网上找到任何信息。
我得到了一个指针列表。我正在尝试从指针转换为HWND,这是GetWIndowText
方法
procedure DoSomething
var
text: string;
someArray: array[0..256] of char;
begin
text := GetWindowText(HWND(PointerList[i]), someArray, 256);
end
Delphi不会让我编译,因为'缺少运算符或分号' - 什么......?
我正在尝试声明变量:var hwnd: HWND;
- 期望的常量或类型标识符... erm ...?
我正在关注互联网上的一些代码。
答案 0 :(得分:6)
对于变量声明,问题是变量名称和类型是相同的。您可以通过限定类型来解决问题:
var
hwnd: Windows.HWND;
如果你的真实代码在你调用GetWindowText时有一个名为hwnd
的变量,你可能需要在演员表中做同样的事情:
text := GetWindowText(Windows.HWND(PointerList[i]), someArray, 256);
问题是您的变量声明隐藏Windows.HWND
并将其替换为名为hwnd
的变量。
首先避免名字冲突可能更容易:
var
WindowHandle: HWND;
...
text := GetWindowText(HWND(PointerList[i]), someArray, 256);
答案 1 :(得分:0)
您可以在指针后添加抑扬音:
text := GetWindowText(HWND(PointerList[i]^), someArray, 256);
答案 2 :(得分:0)
(发布此作为答案,因为评论现在允许足够的文字)
我认为指出这里的问题称为SCOPE是有益的。
假设您有以下代码生成“缺少运算符或分号”错误:
procedure DoSomething(HWND: THandle);
var
text: string;
someArray: array[0..256] of char;
begin
text := GetWindowText(HWND(PointerList[i]), someArray, 256);
end;
作为调试提示,如果将鼠标光标放在GetWindowText中的HWND上,您将获得类似“ Var HWND:Cardinal - Unit1.pas(100)”的工具提示“100是行号。基本上,编译器“看到”函数中的函数HWND参数,而不是Windows.pas中的Windows HWND类型。
使用这种技术,您可以准确地验证每个项目(函数,类型,变量等)确实指向的内容,,如编译器所示。