So, ich habe das Problem gelöst:
Als erstes habe ich die Definition des Datentyps für den Parameter "argv" umgestellt und erweitert:
Delphi-Quellcode:
type
ppArgv = ^pArgv;
pArgv = ^TArgv;
TArgv = array of pointer;
und den Parameter definiert als:
argv: ppArgv;
Der weitere Zugriff erfolgt nun über:
Delphi-Quellcode:
pData := pChar( argv^ ); {* Get pointer to data *}
...
pData := pData + System.SizeOf( WORD ); {* Step past the datatype word *}
pData := pData + System.SizeOf( LIST ); {* and step past the list header. *}
FileNameLen:= pWORD( pData )^; {* Save length of filename. *}
pData := pData + System.SizeOf( WORD ); {* Step past filename length *}
pFileName := pData; {* Save pointer to database file name. *}
pData := pData + FileNameLen;
pData := pData + System.SizeOf( WORD ); {* Step past the datatype word *}
pData := pData + System.SizeOf( LIST ); {* and step past the list header. *}
KeyLen:= pWORD( pData )^; {* Save length of key. *}
pData := pData + System.SizeOf( WORD ); {* Step past key length *}
pKey := pData;
pData := pData + KeyLen;
Einziger Wehrmutstropfen ist, dass die Information bezüglich des Array's in C verloren geht. Aber eventuell gibt es ja jemanden, der hierzu noch eine Idee hat.