十万火急 !! 谁能把 C# 代码 转换成delphi 多谢 来着有分
输入一个十六进制的字符串:15131313
转换后,写入到串口里
public void Reprint(string hexStr, int terminalNumber)
{
byte[] tempByte = new byte[hexStr.Length / 2];
for (int i = 0; i < hexStr.Length; i += 2)
{
tempByte[i / 2] = Convert.ToByte(Convert.ToInt32(hexStr.Substring(i, 2), 16).ToString());
}
Reprint(tempByte, terminalNumber); //写入到串口里
}
[解决办法]
这个函数本身就有问题啊!
函数头中第一个参数是string类型的
函数最后一行中调用的第一个参数是Btye[]类型的
而且这个函数本身怎么会是一个递归调用呢?
[解决办法]
嘿嘿 你知道我来干嘛的
[解决办法]
路过 。。。顶一下吧有高人没
[解决办法]
//猜测你的意思,转化后的函数如下:
{TerminalNumber参数不知何意}
function TForm1.Reprint(HexStr: string; TerminalNumber: Integer): string;
var
i, j: Integer;
TempByte: Array of Byte;
StrTemp: string;
begin
SetLength(TempByte, Trunc(Length(HexStr) / 2));
j := 0;
Result := '';
while True do
begin
TempByte[Trunc(j / 2)] := StrToInt(Format('$%x' ,[StrToInt(Copy(HexStr, j + 1, 2))]));
Inc(j, 2);
if j >= Length(HexStr) then
begin
for i := 1 to Length(TempByte) do
begin
StrTemp := StrTemp + IntToHex(TempByte[i - 1], 0);
end;
Result := StrTemp;
break;
end;
end;
end;
调用如下:
Edit2.Text := Reprint(Edit1.Text, 1);
procedure Reprint(hexStr:String;terminalNumber:Integer);var tempByte:Array of Byte; i:Integer;begin Setlength(tempByte,Length(hexStr) div 2); for i:=0 to Length(hexStr)-1 div 2 do begin tempByte[i]:=StrtoInt64(Copy(hexStr,i*2,2)); end;end;
[解决办法]
procedure Reprint(hexStr:String;terminalNumber:Integer);
var
tempByte:Array of Byte;
i:Integer;
begin
Setlength(tempByte,Length(hexStr) div 2);
for i:=0 to Length(hexStr)-1 div 2 do
begin
tempByte[i]:=StrtoInt64('$'+Copy(hexStr,i*2,2));
end;
end;[code=Delphi(Pascal)][/code]
修改下
[解决办法]
procedure Reprint(hexStr:String;terminalNumber:Integer);
var
tempByte:Array of Byte;
i:Integer;
begin
Setlength(tempByte,Length(hexStr) div 2);
for i:=0 to (Length(hexStr div 2)-1 do
begin
tempByte[i]:=StrtoInt64('$'+Copy(hexStr,i*2,2));
end;
end;[code=Delphi(Pascal)][/code]
再次修改
[解决办法]
我要吧delphi改成c#真杯具啊!
[解决办法]
begin
tempByte[i]:=ord(StrtoInt(Copy(hexStr,i*2,2)));
end;
end
[解决办法]
好久没有来过了。