请熟悉C语言的前辈们帮忙将一段异或运算代码转为Delphi
各位熟悉C的前辈们:
能否帮小弟将下面的代码转成Delphi:
char* AppProtocolCalcTAIPChecksum(Char *passTAIPMsg,unsigned char *checksun)
{
char *pcEnd;
char *pc;
unsigned char cs;
if((pcEnd=strin(pssTAIPMsg,";*"))!=NULL)
{
pc=pssTAIPMsg;
pcEnd+=2;
cs=0;
while(pc<pcEnd)
{
cs ^= *pc;
pc++;
}
*checksum=cs;
return pcEnd-2;
}
else
{
return NULL;
}
}
小弟在此先谢!!!在线等!
问题点数:50、回复次数:4Top
1 楼ccrun(老妖)(www.ccrun.com)回复于 2006-01-09 18:23:31 得分 0
楼主的信誉有点让我不能马上确定占用做饭时间来帮你写代码。
如果晚10点以前仍没人帮你的话,我会考虑动手。Top
2 楼liangqingzhi(老之)回复于 2006-01-09 18:30:24 得分 0
如果晚11点以前老妖仍没帮你的话,我会考虑动手。Top
3 楼keiy()回复于 2006-01-09 19:26:42 得分 50
楼上两位高手不愿做的,让我试试吧!,不过,楼主的C程序还有一些错,顺手改了一下:
//C程序:
#include <stdio.h>
#include <string.h>
char* AppProtocolCalcTAIPChecksum(char *passTAIPMsg,unsigned char *checksum)
{
char *pcEnd;
char *pc;
unsigned char cs;
if((pcEnd=strstr(passTAIPMsg,";*"))!=NULL)
{
pc=passTAIPMsg;
pcEnd+=2;
cs=0;
while(pc<pcEnd)
{
cs ^= *pc;
pc++;
}
*checksum=cs;
return pcEnd-2;
}
else
{
return NULL;
}
}
//以下是我加的测试
main()
{
char *s,*r;
unsigned char c;
s="1234;*561";
r=AppProtocolCalcTAIPChecksum(s,&c);
printf("%s %d\n",r,c);
}
//delphi程序
uses SysUtils;
function AppProtocolCalcTAIPChecksum(passTAIPMsg:pchar;var checksum:byte):pchar;
var
pcEnd:pchar;
pc:pchar;
cs:byte;
begin
pcEnd:=strpos(passTAIPMsg,';*');
if pcEnd<>nil then
begin
pc:=passTAIPMsg;
pcEnd:=pcEnd+2;
cs:=0;
while(pc<pcEnd) do
begin
cs := cs xor byte(pc^);
inc(pc);
end;
checksum:=cs;
result:=pcEnd-2;
end else
result:=nil;
end;
//以下是测试
var
s,r:pchar;
c:byte;
begin
s:='1234;*561';
r:=AppProtocolCalcTAIPChecksum(s,c);
writeln(r,' ',c);
end.
-----------------------------
结果都为:
;*561 21
Top
4 楼dyzhao889(游颖)回复于 2006-01-10 11:01:39 得分 0
小弟非常感激楼上的 keiy()!Top




