菜鸟学习delphi遇到问题,向高人求助。(已由黑夜版主解决)
请教高人有关输出位数的问题。请教高人:
1. edit1 输入机器码:94473715811
2. 与固定字符串(dflk5632129T.cOm)连接
3. 取出连接后的偶数位
4. 偶数位字符串再连接在(2)字符串的尾部
5. (4)连接后的字符串是40位
6. (4)连接后的字符串逐位与($0D, $01, $14, $05,$02)逐位xor运算
结果应该是40位
问题:
edit2 输出的位数是机器码位数,不是40位。
下面是我写的代码,请高人指点那写错了。
谢谢!
function DoubleStr(s: string): string; //连接字符串后取出偶数位字符后再连接
var
str1,str2,str3:string;
i: Integer;
begin
If Length(s) =0 Then MessageBox(0, '请输入机器码', '提示',MB_OK + MB_ICONWARNING)
else
str1:='dflk5632129T.cOm';
str2:=concat(s,str1);
s:= '' ;
for i := 2 to Length(Str2) do
if i mod 2 = 0 then
s:= s + Str2;
str3 := concat(str2,s);
end;
functionOpeateStr(const str3 :string): string; //字符逐位 xor 运算
const
snLen = 5 ;
sn:array of Integer =($0D, $01, $14, $05,$02);
var
i,n: integer;
a:string;
begin
setLength(a,Length(str3));
for i :=1 to Length(str3) do
begin
n := i mod snLen ;
if n = 0 then
n := 5 ;
a := char(ord(str3) xor sn);
Result := a;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit2.text:= OpeateStr(edit1.text);
end;
[ 本帖最后由 wzwgp 于 2006-8-8 10:20 编辑 ] 计算到第4步,结果为:dflk5632129T.cOm47751dl5319.O (29位,非40位)
最后结果等于:igxn7;2&404U:fM`5#27<ex01<8:J
不知道对不对?
[ 本帖最后由 黑夜彩虹 于 2006-8-8 08:47 编辑 ] 原帖由 黑夜彩虹 于 2006-8-8 08:41 发表
计算到第4步,结果为:dflk5632129T.cOm47751dl5319.O (29位,非40位)
最后结果等于:igxn7;2&404U:fM`5#27<ex01<8:J
不知道对不对?
不是的。/:? 程序写的有点问题
结果是:45 21:0!=3<erii87'73?8@+aBl 2580pi7>0-+M
该了一下,不知道对不对
function DoubleStr(s: string): string; //连接字符串后取出偶数位字符后再连接
var
str1,str2,str3:string;
i: Integer;
begin
If Length(s) =0 Then MessageBox(0, '请输入机器码', '提示',MB_OK + MB_ICONWARNING)
else str1:='dflk5632129T.cOm';
str2:=concat(s,str1);
s:= '' ;
for i := 2 to Length(Str2) do
if i mod 2 = 0 then s:= s + Str2;
str3 := concat(str2,s);
result :=str3;
end;
functionOpeateStr(const str3 :string): string; //字符逐位 xor 运算
const
snLen = 5 ;
sn:array of Integer =($0D, $01, $14, $05, $02);
var
i,n: integer;
a:string;
begin
setLength(a,Length(str3));
for i :=1 to Length(str3) do
begin
n := i mod snLen ;
if n = 0 then n := 5 ;
a := char(ord(str3) xor sn);
end;
Result := a;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit2.Text :=OpeateStr(DoubleStr(trim(edit1.Text)));
end;
[ 本帖最后由 hnxyy 于 2006-8-26 14:33 编辑 ] H哥也来了。。。 /:D黑版以后多多提携啊~~~~ H哥谦虚了不是~~,互相学习...
页:
[1]