i need help with adding callback mechanism to my program, i have this:

// global
var
CBackProc: Procedure(src: Longword); stdcall;

// a procedure
CBackProc:= Sources[src].DeleteCB; <-deletecb is pointer to a procedure, filled from another function

CBackProc(src); // call it

this causes my program to collapse and crash, any idea why? and perhaps what am i doing wrong?