2012-04-21 4 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

+0

ps、あなたの仕事はちょっと奇妙に見える、これを読むことを提案する(http://en.wikibooks.org/wiki/Ada_Programming/Tasking) – NWS

答えて

1
宣言したよう

EvArr1はタイプではないオブジェクトです。

あなたは型のパラメータを持つサブプログラム/エントリを持つようにしたい場合は、2番目のは良いです

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