下面为一考勤机更改时针的源码
但我不懂VC,请求你们的帮助,不胜感谢!
VC源码:求转成delphi,如不能的话,提供注释也行,谢了!
void CUpDownClockDlg::OnDownclock() 
{
int RetCode,i,tmp;
int MachineNo;
char temp[512];
UpdateData(TRUE);

    if(m_MacNo.GetLength() ==0){
m_MacNo1.SetFocus();
return;
}
MachineNo=atoi(m_MacNo); if(m_TempCom.GetLength() ==0){
m_TempCom1.SetFocus();
return;
}
m_Com=atoi(m_TempCom); if(m_Commision.GetLength() !=8){
m_Commision1.SetFocus();
return;
}
strcpy((char*)ID,_T(m_Commision));
ID[8] = 0; for(i=0;i<8;i++){
if(ID[i] >='a' && ID[i] <='f')
ID[i] -= 0x20;
if(ID[i]<'0' || (ID[i]>'9' && ID[i]<'A') || ID[i]>'F'){
m_Commision1.SetFocus();
return;
}
} for(i=0;i<8;i++){
if(ID[i] < 'A')
ID[i] -= '0';
else {
ID[i] -= 'A';
ID[i] += 0xA;
}
} for(i=0;i<4;i++)
temp[i] = ((ID[2*i] << 4) & 0xF0) + ID[2*i+1];

memcpy(ID,temp,4); char temp1[512];
unsigned char buffer[512];
unsigned char level_Array[10];
int level=m_ComLevel.GetCurSel();
if(level==1)
{
if(m_FwqJh.GetLength()==0){
m_FwqJh1.SetFocus();
return;
}
tmp=atoi(m_FwqJh);
    level_Array[0]=(unsigned char)tmp;
if(m_SfjPort.GetLength()==0){
m_SfjPort1.SetFocus();
return;
}
tmp=atoi(m_SfjPort);
    level_Array[1]=(unsigned char)tmp;
}
strcpy(temp1,m_time);
    memcpy(temp,temp1+2,2);
buffer[0]=atoi(temp);
memcpy(temp,temp1+6,2);
buffer[1]=atoi(temp);
memcpy(temp,temp1+10,2);
buffer[2]=atoi(temp);
memcpy(temp,temp1+14,2);
buffer[3]=atoi(temp);
memcpy(temp,temp1+18,2);
buffer[4]=atoi(temp);
memcpy(temp,temp1+22,2);
    buffer[5]=atoi(temp);  
//memcpy(temp,temp1+30,2);
    //buffer[6]=atoi(temp);  
RetCode=IniCom(m_Com,0);
if(RetCode){
AfxMessageBox("串口打不开");
    return;

    RetCode=DownClock(m_Com,MachineNo,ID,buffer,level,level_Array);
CloseCom(m_Com);
if(RetCode==0)
{
AfxMessageBox("成功!");
}
else
{
sprintf(temp,"失败!错误代码%d,%s",RetCode,RetCode<0 ? ErrorMsg[-RetCode]:ErrorPMsg[RetCode]);
AfxMessageBox(temp);
}
}

解决方案 »

  1.   

    不懂DELPHI,给你几行注释吧
    void CUpDownClockDlg::OnDownclock() 
    {
    int RetCode,i,tmp;
    int MachineNo;
    char temp[512];
    UpdateData(TRUE);//控件上的数据--》保存到变量

        if(m_MacNo.GetLength() ==0){
    m_MacNo1.SetFocus();
    return;
    }
    MachineNo=atoi(m_MacNo); if(m_TempCom.GetLength() ==0){
    m_TempCom1.SetFocus();//设置焦点
    return;
    }
    m_Com=atoi(m_TempCom); if(m_Commision.GetLength() !=8){
    m_Commision1.SetFocus();
    return;
    }
    strcpy((char*)ID,_T(m_Commision));//字符串拷贝函数
    ID[8] = 0; for(i=0;i<8;i++){
    if(ID[i] >='a' && ID[i] <='f')
    ID[i] -= 0x20;
    if(ID[i]<'0' || (ID[i]>'9' && ID[i]<'A') || ID[i]>'F'){
    m_Commision1.SetFocus();
    return;
    }
    } for(i=0;i<8;i++){
    if(ID[i] < 'A')
    ID[i] -= '0';
    else {
    ID[i] -= 'A';
    ID[i] += 0xA;
    }
    } for(i=0;i<4;i++)
    temp[i] = ((ID[2*i] << 4) & 0xF0) + ID[2*i+1];

    memcpy(ID,temp,4); char temp1[512];
    unsigned char buffer[512];
    unsigned char level_Array[10];
    int level=m_ComLevel.GetCurSel();//得到选中的那一行的index
    if(level==1)
    {
    if(m_FwqJh.GetLength()==0){
    m_FwqJh1.SetFocus();
    return;
    }
    tmp=atoi(m_FwqJh);
        level_Array[0]=(unsigned char)tmp;
    if(m_SfjPort.GetLength()==0){
    m_SfjPort1.SetFocus();
    return;
    }
    tmp=atoi(m_SfjPort);
        level_Array[1]=(unsigned char)tmp;
    }
    strcpy(temp1,m_time);
        memcpy(temp,temp1+2,2);
    buffer[0]=atoi(temp);
    memcpy(temp,temp1+6,2);
    buffer[1]=atoi(temp);
    memcpy(temp,temp1+10,2);
    buffer[2]=atoi(temp);
    memcpy(temp,temp1+14,2);
    buffer[3]=atoi(temp);
    memcpy(temp,temp1+18,2);
    buffer[4]=atoi(temp);
    memcpy(temp,temp1+22,2);
        buffer[5]=atoi(temp);  
    //memcpy(temp,temp1+30,2);
        //buffer[6]=atoi(temp);  
    RetCode=IniCom(m_Com,0);
    if(RetCode){
    AfxMessageBox("串口打不开");
        return;

        RetCode=DownClock(m_Com,MachineNo,ID,buffer,level,level_Array);
    CloseCom(m_Com);
    if(RetCode==0)
    {
    AfxMessageBox("成功!");
    }
    else
    {
    sprintf(temp,"失败!错误代码%d,%s",RetCode,RetCode<0 ? ErrorMsg[-RetCode]:ErrorPMsg[RetCode]);
    AfxMessageBox(temp);
    }
    }