下面为一考勤机更改时针的源码
但我不懂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);
}
}