【问题标题】:initialize an array of events, win32,ada初始化一个事件数组,win32,ada
【发布时间】:2012-04-21 11:55:48
【问题描述】:

我需要在 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;

错误:

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

【问题讨论】:

标签: multithreading winapi events ada


【解决方案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);

【讨论】:

    最近更新 更多