程序结束时出现EInvalidPointer异常,未执行线程,未开定时器,不知何处出现的异常。请高手指教!!

解决方案 »

  1.   

    这是我主窗体建立后的程序,执行程序后立即关闭,还是会出现异常。请高手指点。
    procedure TFormMain.FormCreate(Sender: TObject);
    begin
      //窗体及控件初始化部分
      Timer1.Interval:=100;                 //定时器1为更新数据
      timer1.Enabled:=False;  Timer2.Interval:=1000;               //定时器2为数据采集
      Timer2.Enabled:=False;  Timer3.Interval:=2000;
      Timer3.Enabled:=False;end;procedure TFormMain.FormActivate(Sender: TObject);
    var empty: Variant;
    begin
         TVarData(empty).vType := varError;
         Map1.CreateCustomTool(CUSTOM_Ruler, miToolTypeLine, miSizeCursor, miSizeCursor, miSizeCursor, empty);
         VarClear(Empty);
    end;procedure TFormMain.FormShow(Sender: TObject);
    Var
      MapPath : String;
    begin
      BStartCollect.Caption:='开始采集';  EdOffice.Text:='';
      EdName.Text:='';
      EdMode.Text:='';
      EdBeginStation.Text:='';
      EdEndStation.Text:='';
      EdCurrentName.Text:='';
      EdKMFlag.Text:='';
      EdLon.Text:='';
      EdLat.Text:='';  //数据初始化部分
      UpdataStartFlag := 0;
      AnswerFlag := 3;
      
      ComPort:=1;                          
      BaudRate:=9600;
      BOpenCom.Enabled:=True;
      BCloseCom.Enabled:=False;  CollectStartFlag:=TRUE;
      CollectFlag :=False;
      
      CreateLayerFlag:=TRue;          
      Label14.Visible:=False;         
      Label15.Visible:=False;
      Label16.Visible:=False;
      Label17.Visible:=False;
      BLabelClear.Visible:=False;
      GroupBoxDis.Visible:=False;
      BEditRect.Caption:='打开编辑';
      GroupEdit.Visible:=False;
      GroupBoxMoni.Visible:=False;        BAddStation.Enabled:=False;  RepeatFlag:=0;
      IndexStartAddress :=$00;
      UpdataStartAddress := $8000;
      IndexNumber:=0;
      StandardNumber:=0;
      TempAddress:= UpdataStartAddress;
      ChangeStartFlag:=True;
      DataModule1.Table1.Active:=False;
      DataModule1.Table1.TableName:=ExtractFilePath(Application.ExeName)+ 'Db\DBCollect.dbf';
      DataModule1.Table1.Active:=true;
      CreateLayerFlag:=True;
      RectLayerFlag:=False;
      
      ProgressBar2.Min:=0;
      ProgressBar2.Position:=0;
      Memo1.Clear;
      Memo2.Clear;
      Label4.Visible:=False;
      Label5.Visible:=False;
      Memo1.Visible:=False;
      Memo2.Visible:=False;
      Button2.Visible:=False;
      Button3.Visible:=False;  TrainPositionFlag:=False;
      GPSorStationFlag:=True;
      moniOpen:=False;
      try                               
        MapPath := extractfilepath(application.ExeName)+'Db\China.tab';
        map1.Layers.Add(MapPath,1);
        map1.Layers.Item(1).AutoLabel:=True;
        map1.Layers.Item(1).LabelProperties.Position:=miPositionBR;    Map1.TitleText:='';
      except
        on E:exception do
          showmessage(MapPath+'不存在或者格式损坏,请检查该文件并请重新运行本系统');
      end;
    end;
    procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
    begin  DataModule1.Table1.Active:=False;
      DataModule1.Table2.Active:=False;
      DataModule1.Table3.Active:=False;
      DataModule1.Table4.Active:=False;
      DataModule1.Table5.Active:=False;
      DataModule1.TableMap.Active:=False;
      map1.Layers.RemoveAll;
    end;
      

  2.   

    http://borland.mblogger.cn/aiirii/posts/2530.aspx
      

  3.   

    可是这个异常是在程序结束以后,就是在FormMain.close以后出现的,无法捕捉这个异常啊!