各位大神。请问这段C++代码翻译成Delphi 是什么?
void CommentAsc(char *soustr, short len, unsigned char *desstr)
{
int i, ch;
char tmpstr[53248]={0}; sprintf(tmpstr, "%*.*s",len,len,soustr);
for( i=0;i<(len+1)/2;i++)
{
sscanf( tmpstr+i*2, "%02X", &ch);
desstr[i] = ch & 0xFF;
}
desstr[i] = '\0';
}
解决方案 »
- ADO连接修改Paradox表时“操作必须使用一个可更新的查询”错误?
- 有没有delphi的全文批注控件?
- delphi7。0 报表
- 在一个模态窗口中用按键调用了另一个模态窗口,当关闭了这个调用窗口后焦点回到原来窗口时首先会触发该窗口的什么事件
- 当把combobox1的风格设为csDropDownList时,通过代码combobox1.text:='123'赋值,为何不能显示?
- 如何得知SQL SERVER中某张表的存在,不用SELECT
- 分布式程序开发的问题?如何提交主从表数据(从表的)UP有分
- 谁帮我看看这段代码?
- delphi + oracle问题
- 从数据库取时间的问题,很简单的题。各位大虾帮忙啊!
- 一个组件事件的小学习问题(好久没写了,问题来了)
- 少数字符乱码:请帮我看看如何将string转化为pansichar,并向Dll传递 char*参数
var
i : Integer;
ch, tmpstr, FormatStr: string;
result: array of Char;
aChar: Char;
begin
//在”%m.ns”中,m 表示占用宽度(字符串长度不足时补空格,超出了则按照实际宽度打印)
//,n 才表示从相应的字符串中最多取用的字符数。
SetLength(result,(len+1) div 2 + 1);
FormatStr:= '%'+inttostr(len)+'.'+inttostr(len)+'s';
tmpstr := Format(FormatStr ,[soustr]);
I := 0;
while i<(len+1)/2 do
begin
ch := format('%.2x',[StrToIntDef(tmpstr,0)+i*2]);
aChar := char(StrToIntDef('$'+ch,0));
result[I] := aChar;
I:=I+1;
end;
desstr:=string(result);
end;
2. StrToIntDef(tmpstr,0)+i*2 这个明显对C代码理解错了
3. 如果原样翻译的话,char *应该用PAnsiChar,如果用string的话,short len这个参数可以不要了
4. 代码很臃肿