求各位帮忙,很急。VC函数转换成Delphi,谢谢。(200)

  • 主题发起人 主题发起人 诺亚
  • 开始时间 开始时间

诺亚

Unregistered / Unconfirmed
GUEST, unregistred user!
这里有两段函数,由于我不懂VC语言,特此请求会这两种语言的大侠帮我转换成Delphi语法,不胜感激。int CTesttransferDlg::XorString(CString *pStr){ if( pStr->IsEmpty() ) { return 0; } int nStrLen; char xorResult; char hsb,lsb; int i; nStrLen = pStr->GetLength(); xorResult = 0; for( i=0;
i<nStrLen;
i++ ) { if( pStr->GetAt(i) == ' ' ) pStr->SetAt(i,'0'); xorResult = xorResult^pStr->GetAt(i); } lsb = xorResult & 0x0f; if(lsb<=9) lsb += 0x30; else
lsb += 55; hsb = xorResult; hsb >>= 4; if( hsb <= 9) hsb += 0x30; else
hsb += 55; pStr->Insert(nStrLen, "1234"); // pStr->SetAt( nStrLen, hsb ); pStr->SetAt( nStrLen+1, lsb ); pStr->SetAt( nStrLen+2, 42 ); pStr->SetAt( nStrLen+3, 13 ); return 1;}int CTesttransferDlg::SendString(CString strSend){ LPTSTR pstr=strSend.
GetBuffer(m_strEditSend.
GetLength()+1); int res=m_sock.Send(pstr,strSend.
GetLength()+1); int nReturn = 1; if((res==SOCKET_ERROR&&m_sock.GetLastError()==WSAEWOULDBLOCK)|| (res>0&&res<strSend.
GetLength()+1)) { m_sock.SetResend( (BYTE*)(pstr+((res==-1)?0:res)), (strSend.
GetLength()+1)-((res==-1)?0:res) ); } else
if(res==SOCKET_ERROR&&m_sock.GetLastError()!=WSAEWOULDBLOCK) { MessageBox("发送失败"); nReturn = 0; } strSend.
ReleaseBuffer(); return nReturn;}
 
第二个函数用到m_sock这个类,得看上下文了,连他往哪发都不知道
 
第二个函数是向上位机发送数据。用到的控件是ClientSocket
 
N年没用VC了,试着翻译了下,第一个函数function XorString(var pStr: string): Integer;var nStrLen, i: Integer;
hsb, lsb: Char;
xorResult: Byte;
begin
Result := 0;
if pStr = '' then
Exit;
nStrLen := Length(pStr);
xorResult := 0;
for i := 1 to nStrLendo
begin
if pStr = ' ' then
pStr := '0';
Inc(xorResult);
end;
lsb := Char(xorResult and 16);
if Byte(lsb)<=9 then
lsb := Char(Byte(lsb) + 48) else
lsb := Char(Byte(lsb) + 55);
hsb := Char(xorResult shr 4);
if Byte(hsb)<=9 then
hsb := Char(Byte(hsb) + 48) else
hsb := Char(Byte(hsb) + 55);
pStr := pStr + hsb + lsb + #42 + #13;
Result := 1;
end;
 
第二个要根据实际情况自己写了。
 
多人接受答案了。
 
分数分配反了吧?
 
非常抱歉,真的分配反了。那怎么办呢?能重新分配吗?[:(]
 
后退
顶部