关于常量是否可以在程序中更改其值的有关问题

关于常量是否可以在程序中更改其值的问题。
我看别人的代码里定义的常量都可以在程序里边改变它的值,而我自己试验的时候就会报[Error]   Unit1.pas(30):   Left   side   cannot   be   assigned   to这样的错误。我声明的常量是这个样子的:
unit   Unit1;

interface

uses
    Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,
    Dialogs,   StdCtrls;
const
    i:integer=0;
    t=1;
type
    TForm1   =   class(TForm)
        Button1:   TButton;
        procedure   Button1Click(Sender:   TObject);
    private
        {   Private   declarations   }
    public
        {   Public   declarations   }
    end;

var
    Form1:   TForm1;

implementation

{$R   *.dfm}

procedure   TForm1.Button1Click(Sender:   TObject);
begin
    i:=t;//出错
    i:=1;//出错
end;

end.
执行Button1Click的时候就会报上面那个错误。但别人用就不会,把别人代码弄出来:
const

    AVICompressIdx:integer=1;
    CloseTick:integer=600;                             //   自动关闭窗口秒计数
    CM_AlarmPrompt   =WM_USER+1;                     //   自定义告警提示消息
    ZoneName:string= '.zzpat.com ';

    HTYYTS:integer=3;                                             //   后台语音提示次数
    vPlaySound:boolean=false;                             //   后台声音提示播放标识
    vPlayFile:shortstring= ' ';                             //   后台声音播放文件名
    CurrentPlayNum:integer=0;                             //   后台声音已播放次数

    AppFlag:integer=0;                                       //程序退出时是否保存INI(默认为保存)

    TabUser:integer=0;                                         //判断button7是用来登陆还是用来注销用户(默认为登陆)
procedure   TCenter114Form.Button7Click(Sender:   TObject);
var   UserLogForm:TUserLogForm;
begin
    UserLogForm:=TUserLogForm.Create(self);
    with   UserLogForm   do
    begin
        if   ShowModal=1   then
        begin
            AdminData.Username:=UserLogForm.Edit1.Text;
            AdminData.Password:=UserLogForm.Edit2.Text;
            AdminData.TCVSRunFlag:=0;
            AdminData.CmdType:=2;
            if   TabUser=0   then       //   用户登录
            begin
                Alarm114Log.StartTime:=now;           //获取话务员上线时间