I have similar problems everytime I use a "array of " with any record type, and pass to COM objects.
so, create a variable...
BufferCaps: TDIDevCaps;
and use:
SetLength(FJoyCaps, Length(FJoyCaps) + 1);
BufferCaps.dwSize := SizeOf(TDIDevCaps);
FJoyDevice[iCount].GetCapabilities(BufferCaps);
FJoyCaps[iCount] := BufferCaps;
always use a local record to pass to any COM interface, if you pass a record of a dynamic array you always get Access Violation (i think that is bug in the compiler)
Bookmarks