Label
  Exit;

Const
  DRM_name_count        = 6;

Var
  ret_status            : Dwt$Cardinal;
  callback_names        : array [1..DRM_name_count] of Dwt$DRMreg_Arg;



  {------------------------------------------------------------------------------
    Store a name/value pair for DRM REGISTER NAMES
  }
  procedure register_name (var rname : [readonly] packed array [l..h:integer] of char;
                           rvalue : unsigned;
                           var reg : Dwt$DRMreg_Arg);
  var p : record case integer of
           1 : ( i : unsigned);
           2 : ( s : Dwt$Strng);
          end;
  begin
  p.i := iaddress(rname);
  reg.Dwt$A_DRMr_name := p.s;
  reg.Dwt$L_DRMr_value := rvalue;
  end;


{ Register names with DRM }
register_name ('SET_INTERVAL'(0),               iaddress(Set_Interval),                 callback_names[1]);
register_name ('CREATE_DATA_FIELD'(0),          iaddress(Create_Data_Field),            callback_names[2]);
register_name ('TEXT_VALUE_CHANGED'(0),         iaddress(Text_Value_Changed),           callback_names[3]);
register_name ('CALCULATE_BUTTON_PRESSED'(0),   iaddress(Calculate_Button_Pressed),     callback_names[4]);
register_name ('QUIT'(0),                       iaddress(Quit),                         callback_names[5]);
register_name ('CREATE_LIST_BOX'(0),            iaddress(Create_List_Box),              callback_names[6]);
ret_status := Dwt$Register_DRM_Names (callback_names, DRM_name_count);
if ret_status <> DWT$C_DRM_SUCCESS then
  begin
  writeln('Failed to register DRM names');
  goto Exit
  end;


Exit:
end.
