Используйте этот вид кода
type
PJAlloc = ^TJAlloc;
TJAllocAlloc = function(allocator: PJAlloc; size: integer): pointer; cdecl;
TJAllocFree = procedure(allocator: PJAlloc; p: pointer); cdecl;
TJAllocRealloc = function(allocator: PJAlloc; p: pointer; size: integer); cdecl;
TJAlloc = record
alloc: ^TJAllocAlloc;
free: ^TJAllocFree;
realloc: ^TJAllocRealloc;
end;
И измените cdecl на stdcall, в зависимости от соглашения о вызовах вашей библиотеки C.
Альтернативное объявление (возможно, более «паскальское») может быть:
type
TJAllocAlloc = function(var allocator: TJAlloc; size: integer): pointer; cdecl;
TJAllocFree = procedure(var allocator: TJAlloc; p: pointer); cdecl;
TJAllocRealloc = function(var allocator: TJAlloc; p: pointer; size: integer); cdecl;
TJAlloc = record
alloc: ^TJAllocAlloc;
free: ^TJAllocFree;
realloc: ^TJAllocRealloc;
end;