一个关于BCB的问题?

来源:百度知道 编辑:UC知道 时间:2024/09/24 00:28:22
我在BCB5中放了3个控件,EDIT两个,一个BUTTON,这是自己写了一个算法函数

……ulong CRCBitReflect(ulong ulData, int nBits)……
这是控件代码:
Edit2->Text=CRCBitReflect(Edit1->Text);
运行后
产生错误如下:
[C++ Error] Unit1.cpp(23): E2034 Cannot convert 'AnsiString' to 'unsigned long'
[C++ Error] Unit1.cpp(23): E2342 Type mismatch in parameter 'ulData' (wanted 'unsigned long', got 'AnsiString')
[C++ Error] Unit1.cpp(23): E2193 Too few parameters in call to 'CRCBitReflect(unsigned long,int)'
如能解决问题,再送上100分!谢谢
谁能帮我写一个程序把这个地方搞通,也就是如何解决这个问题

#define CRC16_POLYNOMIAL 0x1021 // CRC_16校验方式的多项式.

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
// typedef enum tagBoolean { FALSE, TRUE } bool;

ulong g_ulTable[256];

// CRC_16方式校验的初始化函数, 计算CRC_16余数表.
void CRC16Init(void)
{
uint nRemainder;
int n, m;
ulong *pulTable = g_ulTable;

for(n = 0; n < 256; n ++)
{
nRemainder = (uint)n << 8;
for(m = 8; m > 0; m --)
{
if(nRemainder & 0x8000)
{
nRemainder = (nRemainder << 1) ^ CRC16_POLYNOMIAL;
}
else
{
nRemainder = (nRemainder << 1);
}
}
*(pulTable + n) = nRemainder;
}
}

// 反转数据的比特位, 反转后MSB为1.
// 反转前: 1110100011101110 0010100111100000
// 反转后: 1111001010001110 1110001011100000
ulong CRCBitReflect(ulong ulData, int nBits)
{
ulong u