2012-04-21 58 views
1

我需要用win32帮助来欺骗事件数组。语言: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; 

错误:

The types are not convertible; the operand type must be an array type, Continuing

+1

更多信息所需的全面诊断。很可能你的CreateEvent函数没有返回HANDLE类型的东西。 – NWS 2012-04-21 13:36:25

+0

ps,你的任务也看起来有点奇怪,建议你看看这个(http://en.wikibooks.org/wiki/Ada_Programming/Tasking) – NWS 2012-04-21 13:39:07

回答

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); 
+0

我找到其他方法,thnx都是。 – Val 2012-04-22 23:51:46