Witam. Potrzebuje przepisac kod z C do Delphi a kompletnie nie mam pojecia jak to zrobic.
char * cp, cMsg[300], cTxt[256], cKey;
WORD * wp;
DWORD * dwp, dwTime;
short * sp;
int * ip, iRet, i, * fightzonenum ;
if ((m_pGSock == NULL) && (m_pLSock == NULL)) return FALSE;
dwTime = timeGetTime();
ZeroMemory(cMsg, sizeof(cMsg));
cKey = (char)(rand() % 255) +1; // v1.4
// to Log Server
dwp = (DWORD *)(cMsg + DEF_INDEX4_MSGID);
*dwp = dwMsgID;
wp = (WORD *)(cMsg + DEF_INDEX2_MSGTYPE);
*wp = NULL;
cp = (char *)(cMsg + DEF_INDEX2_MSGTYPE + 2);
// 2002-09-16 #1 for Terra
#ifdef DEF_ACCOUNTLONG
ZeroMemory(cTxt, sizeof(cTxt)); // v1.4
memcpy(cTxt, m_cAccountLong, DEF_ACCOUNTLEN);
memcpy(cp, cTxt, DEF_ACCOUNTLEN);
cp += DEF_ACCOUNTLEN;
#else
ZeroMemory(cTxt, sizeof(cTxt)); // v1.4
memcpy(cTxt, m_cAccountName, 10);
memcpy(cp, cTxt, 10);
cp += 10;
#endif
ZeroMemory(cTxt, sizeof(cTxt)); // v1.4
memcpy(cTxt, m_cAccountPassword, 10);
memcpy(cp, cTxt, 10);
cp += 10;
//v1.43
memcpy(cp, m_cWorldServerName, 30);
cp += 30;
// 2002-09-16 #1 for Terra
#ifdef DEF_ACCOUNTLONG
iRet = m_pLSock->iSendMsg(cMsg, 46 + DEF_ACCOUNTLEN, cKey);
#else
iRet = m_pLSock->iSendMsg(cMsg, 56, cKey);
#endif
I jeszcze to :)
int XSocket::iSendMsg(char * cData, DWORD dwSize, char cKey)
{
WORD * wp;
int i, iRet;
// ¸Ţ˝ĂÁö Ĺ??â°ˇ ąöĆŰş¸´Ů Ĺ?¸é ş¸łľ Ľö ľř´Ů.
if (dwSize > m_dwBufferSize) return DEF_XSOCKEVENT_MSGSIZETOOLARGE;
// ¸?˝ş´× ĽŇÄĎ Č¤Ŕş ´ÝČů ĽŇÄĎŔ¸?Î ¸Ţ˝ĂÁö¸? ş¸łľ Ľö´Â ľř´Ů.
if (m_cType != DEF_XSOCK_NORMALSOCK) return DEF_XSOCKEVENT_SOCKETMISMATCH;
// ĂĘ?âČ ?ÇÁö ľĘľĆĽ ¸Ţ˝ĂÁö¸? ş¸łľ Ľö ľř´Ů.
if (m_cType == NULL) return DEF_XSOCKEVENT_NOTINITIALIZED;
// Ĺ° ŔÔ?Â
m_pSndBuffer[0] = cKey;
wp = (WORD *)(m_pSndBuffer + 1);
*wp = (WORD)(dwSize + 3);
memcpy((char *)(m_pSndBuffer + 3), cData, dwSize);
// v.14 : m_pSndBuffer +3 şÎĹÍ dwSize?îÁö cKey°ˇ 0ŔĚ ľĆ´Ď?ó¸é ľĎČŁČÇŃ´Ů.
if (cKey != NULL) {
for (i = 0; i < (int)(dwSize); i++) {
m_pSndBuffer[3+i] += (i ^ cKey);
m_pSndBuffer[3+i] = (char)( m_pSndBuffer[3+i] ^ (cKey ^ (dwSize - i)) );
}
}
// 2001-11-27ŔĎ ĽöÁ¤?Ę
if (m_bIsWriteEnabled == FALSE) {
iRet = _iRegisterUnsentData(m_pSndBuffer, dwSize +3);
}
else iRet = _iSend(m_pSndBuffer, dwSize + 3, TRUE);
if (iRet < 0) return iRet;
else return (iRet - 3);
}
Bardzo prosze o pomoc.