初始化一系列事件,win32,ada

时间:2012-04-21 11:55:48

标签: multithreading winapi events ada

我需要使用win32帮助来欺骗一系列事件。语言:Ada。

我的所作所为:

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;

错误:

  

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

1 个答案:

答案 0 :(得分: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);