Es gibt einen wichtigen Unterschied bei den Enums. In C ist Wmpio_errors immer 4 Bytes lang. In Delphi erst mal nur 1 Byte. Ein {$MINENUMSIZE 4} vor der Deklaration in Delphi behebt das Problem.
Code:
int * pts_list;
const unsigned char * palette;
const char * name;
const char ** wads_list;
double * ambient;
const int * fog1;
wmpio_uvw * uv_list; // wmpio_uvw ist ein struct ( record )
double skills[20]; // ich nehme an, das das ein Array ist
Das ist ein interessantes Sortiment von Variablendeklarationen.
Delphi-Quellcode:
var
pts_list: PInteger; // hier wird affensichtlich ein dynamisch alloziiertes Array von Integern abgelegt
palette: PChar; // das const besagt in C das die Elemente auf die dr Pointer zeigt nicht veraendert werden duerfen. Der Pointer aber schon.
name: PChar;
wads_list: PPChar; // mit "PPChar = ^PChar,". Basis fuer ein dynamisch alloziiertes Array of C strings bei dem die Chars nicht veraendert werden koennen, aber sowohl die PChars als auch wads_list schon.
ambient: PDouble; // hier wird affensichtlich ein dynamisch alloziiertes Array von Doubles abgelegt
fog1; // das ksann man wohl jetzt selbst verstehen
uv_list: Pwmpio_uvw; // mit "Pwmpio_uvw = ^wmpio_uvw;"
skills: array [0..19] of Double; // ich nehme an, das das ein Array ist. Genau.