考勤钟生成的二进制文件 attn.ter,每条考勤记录的长度为10个字节,前3位为日期,4/5位是时间,6位是出入类型,7-10位是IC卡编号。
    问题是,怎样把下面的Foxpro程序翻译成Delphi的,急//------------------------Foxpro 源程序--------------------------------
PROCEDURE AppAttn
 PRIVATE NFILE , CDATA
 PRIVATE NPTR , DDATA
 IF  .NOT. FILE(CATTNDAT)
 RETURN 0
 ENDIF 
 NFILE = FOPEN(CATTNDAT)
 IF NFILE = -1
 RETURN 54
 ENDIF 
 DO SHOWCOMM WITH '更新员工刷卡资料 ...'
 USE IN 0 staff ORDER card_int
 USE IN 0 visitor ORDER card_int
 USE IN 0 visitdat
 USE IN 0 (CDATAPATH + 'attn')
 NPTR = 0
 DCURR = DATE()
 NTOTREC = 0
 DO WHILE  .NOT. FEOF(NFILE)
 CDATA = FREAD(NFILE,10)
 M.DATE = INT2DAYSTR(LEFT(CDATA,3))  //取日期
 NPTR = NPTR + 10
 DDATA =  ;
      CTOD(SUBSTR(M.DATE,7,2) + '/' + SUBSTR(M.DATE,5,2) + '/' + LEFT(M.DATE,4))
 M.TIME = INT2TIMSTR(SUBSTR(CDATA,4,2))  //取时间
 M.IO_TYPE = MIN(ASC(SUBSTR(CDATA,6,1)),99) //取出入类型
 IF LFULLTENDIG
    M.CARD = MIN(VAL(INT2CARD(RIGHT(CDATA,6))),9999999999)  //取IC卡号
 ELSE 
    M.CARD = MIN(VAL(INT2CARD(RIGHT(CDATA,4))),9999999999)
 ENDIF 
 M.CARD_NO = STRTRAN(STR(M.CARD,NCARDLG),' ','0')
 M.DOOR_NO = NCURRDOOR
 M.SITE_NO = NCURRSITE
 M.TER_NO = NCURRTER
 IF M.IO_TYPE > 100
    M.IO_TYPE = MIN(M.IO_TYPE - 100,99)
    SELECT VISITOR
    SEEK M.CARD
    LFND = FOUND()
    IF LFND
       SCAN REST WHILE M.CARD = VAL(VISITOR.CARD_NO)
          IF (DTOS(VISITOR.ADD_DATE) <= M.DATE) AND  ;
         (EMPTY(VISITOR.EXP_DATE) .OR. DTOS(VISITOR.EXP_DATE) >= M.DATE)
             EXIT 
          ENDIF 
       ENDSCAN 
       IF M.CARD <> VAL(VISITOR.CARD_NO)
          SKIP -1
       ENDIF 
    ENDIF 
    IF LFND
       M.VISIT_NO = VISITOR.VISIT_NO
       SELECT VISITDAT
       APPEND BLANK
       GATHER MEMVAR 
       UNLOCK 
    ENDIF 
 ELSE 
    SELECT STAFF
    SEEK M.CARD
    IF FOUND()
       SCAN REST WHILE M.CARD = VAL(STAFF.CARD_NO)
          IF EMPTY(STAFF.EXP_DATE) .OR. DTOS(STAFF.EXP_DATE) >= M.DATE
             EXIT 
          ENDIF 
       ENDSCAN 
       IF M.CARD <> VAL(STAFF.CARD_NO)
          SKIP -1
       ENDIF 
    ENDIF 
    M.EMP_NO = IIF(FOUND(),STAFF.EMP_NO,'* ' + STRTRAN(STR(M.CARD,NCARDLG),' ','0'))
    SELECT ATTN
    APPEND BLANK
    GATHER MEMVAR 
    UNLOCK 
    NTOTREC = NTOTREC + 1
    IF MOD(NTOTREC,100) = 0
       DO SHOWCOMM WITH '已接收 ' + LTRIM(STR(NTOTREC)) + ' 个记录'
    ENDIF 
 ENDIF 
 ENDDO 
 DO SHOWCOMM WITH '已接收 ' + LTRIM(STR(NTOTREC)) + ' 个记录'
 = FCLOSE(NFILE)
 USE IN STAFF
 USE IN ATTN
 USE IN VISITOR
 USE IN VISITDAT
 DO BACKATTNDAT
 RETURN 0
ENDPROC
*------