this works for me...

[pascal]
program Project1;

{$APPTYPE CONSOLE}

type
TDeleteNotifyproc = procedure( src : Longword; userdata : pointer ); stdcall;

TSource = packed record
DeleteCB : TDeleteNotifyproc;
end;

var
aSource : TSource;
aCallBack : TDeleteNotifyproc;

procedure test( src : Longword; userdata : pointer ); stdcall;
begin
WriteLn( 'Hello' )
end;

begin
aSource.DeleteCB := Test;
aCallBack := aSource.DeleteCB;
aCallBack( 0, nil ); // call it
end.
[/pascal]

If you are doing everything within Pascal you really do not need the "stdcall" calling convention. If you plan to make it accessible to C and allow plugins then on windows use stdcall and on Linux I believe you need to use cdecl.