2012-04-21 2 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이 형이 아닌 객체입니다.

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

나는 다른 방법을 찾았습니다. – Val

관련 문제