新人帮忙看看几行代码,入门级的。
代码段1:
function UpToName(Text: String): String;
var
TempText,TempName: string;
begin
TempName:= ' ';
TempText:= ' ';
TempText:= ArithmeticTriangle(Text);
TempText:= ArithmeticStrUp(TempText);
//后面两句什么意思,帮忙解释解释。
SetLength(TempName,Length(TempText) div 2);
HexToBin(@TempText[1], @TempName[1], Length(TempName));
//=======================
Result:= TempName;
end;
代码段2:
function IsChineseStr(Text: String): Boolean;
var
Buff : WideString;
Index : integer;
Temp : array[1..2] of char;
begin
Result:= False;
Buff:= Text;
for Index:=1 to Length(Buff) do
begin
//后面一句什么意思?帮忙看看
Move(Buff[Index], Temp, 2);
//=========================
//下面if语句中的#0和#$FF表示什么?
if (Temp[2]> #0) and (Temp[2] <> #$FF) then
begin
Result:= True;
Exit;
end;
end;
end;
因为DELPHI打包的DLL在连入C#中有点问题,所以我想把代码直接翻译成C#,上面两行代码注释的地方看不明白,哪位能帮我看看?我delphi没用过,能不能把它翻译成C#?非常感谢!!
[解决办法]
SetLength(TempName,Length(TempText) div 2);
//设定字符串TempName的长度为 字符串TempText长度的1/2 (注意,是整除)
//例如:TempText长度是13,那么Leng(TempText) div 2就等于6 ,就设定TempName长度为6
Move(Buff[Index], Temp, 2);
//从Temp处开始复制2个字节数据到Buff[Index]处开始的2个字节
#0就是 CHR(0),也就是零终止符,也就是NULL,也就是ASCII码表里第一个字符
#$FF就是#255,也就是CHR(255),是ACSII码表里最后一个字符
[解决办法]
HexToBin(@TempText[1], @TempName[1], Length(TempName));
//我以前没用过这个函数,所以花时间看了一下(你也可以Ctrl+鼠标左击HexToBin看一下函数原型)
//好象是把TempText[1]开始的每两个元素的十六进字符,转换为相应的数字,存放到TempName去。
//例如:TempText的内容是 '3 ', '3 ', '4 ', '3 '(注意这是字符表示的十六进制)转换后,TempName的内容为51,67。换算成字符显示那就是 '3 ', 'C '。查一下ASCII码表就会明白它们之间的联系。