Hier ein komplettes Beispiel.
Je nachdem ob mit einem offenen oder normalen Array probiert werden soll muss man nur die Klammern vor dem Beispiel setzen...
Delphi-Quellcode:
procedure testWFMO;
var
{ ThreadHandleListe: array of tHandle; {Beispiel 1}
ThreadHandleListe: array[0..4] of tHandle; {Beispiel 2}
WaitErgebnis: cardinal;
cZaehler: cardinal;
begin
{ SetLength( ThreadHandleListe, 5 ); {Beispiel 1}
for cZaehler:= 1 to length(ThreadHandleListe) do
ThreadHandleListe[cZaehler -1]:= CreateEvent( nil,true, true, nil );
WaitErgebnis:= WaitForMultipleObjects( length(ThreadHandleListe), @ThreadHandleListe, true, 0 );
writeln( WaitErgebnis );
for cZaehler:= 1 to length(ThreadHandleListe) do
CloseHandle( ThreadHandleListe[cZaehler -1] );
{ SetLength( ThreadHandleListe, 0 ); {Beispiel 1}
end;
So läuft {Beispiel 2} und das Ergebnis ergibt 0.
Wenn man vor {Beispiel 2}
vorn noch eine Klmmer setzt und die anderen
vorn entfernt, hat men {Beispiel 1}, welches $FFFFFFFF ergibt...
Dabei ist es nicht relevant ob man high oder length benutzt...