There is no need for pointers.
Inno Setup Pascal Script does not support pointers.
The statement:
function UnzipFiles(var Files: TUnzipFiles; const Silent: BOOL): BOOL;
external 'UnzipFiles@files:Unzipper.dll stdcall';
Passes Files
as a var parameter, which means that what's really passed is a pointer to TUnzipFiles
. There is no need to make TUnzipFiles
array of pointers.
Just make it a normal array and everything will work.
The solution is to just use an array of the record in question:
TUnzipFiles = array of TUnzipFile;
Now it will work.
Because a var parameter passes a pointer internally your call will not be any slower (or faster).
That's the beauty of Delphi. It hides the complexity of pointers in almost all cases where you'd need it in C.
All objects references and var parameters are really pointers, but you needn't worry about that.