1

我需要在 win32 的帮助下欺骗一系列事件。语言:阿达。

我所做的:

p:integer := 4;
Type EvArr1 is array (1..p) of HANDLE;

procedure Start (Tid : in integer) is
       Task T1;
        task body T1 is
            Bl:bool;
            temp:Dword;
            ...
        begin
                        ...
            Bl:=(EvArr1(Tid));
            temp:=WaitForMultipleObjects(EvArr1, infinite);
                        ...
    end T1;
end start;
BEGIN
        ...
    for i in 1..p loop
        EvArr1(i) := CreateEvent(null, 1, 0, null); -- error
        EvArr2(i) := CreateEvent(null, 1, 0, null); -- error
        start(i);
    end loop;

错误:

类型不可转换;操作数类型必须是数组类型,继续

4

1 回答 1

1

正如声明的那样,EvArr1是一个类型,而不是一个对象。

尝试

EvArr1 : array (1 .. p) of HANDLE;

或者

type Event_Array is array (1 .. p) of HANDLE;
EvArr1 : Event_Array;

如果您想要具有类型参数的子程序/条目,则第二个很好。更妙的是,

type Event_Array is array (Positive range <>) of HANDLE;
EvArr1 : Event_Array (1 .. p);
于 2012-04-22T19:51:52.447 回答