飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3904|回复: 7

菜鸟学习delphi遇到问题,向高人求助。(已由黑夜版主解决)

[复制链接]
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2006-8-6 16:46:44 | 显示全部楼层 |阅读模式
    请教高人有关输出位数的问题。

    请教高人:

    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;

    function  OpeateStr(const str3 :string): string;    //字符逐位 xor   运算
      const
      snLen = 5 ;
      sn:array[1..snLen] 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[n]);
       Result := a;
       end;
       end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      edit2.text:= OpeateStr(edit1.text);
      
    end;

    [ 本帖最后由 wzwgp 于 2006-8-8 10:20 编辑 ]
    PYG19周年生日快乐!
    秋风下的落叶 该用户已被删除
    发表于 2006-8-7 22:30:10 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-8-8 08:41:13 | 显示全部楼层
    计算到第4步,结果为:dflk5632129T.cOm47751dl5319.O    (29位,非40位)

    最后结果等于:igxn7;2&404U:fM`5#27<ex01<8:J

    不知道对不对?

    [ 本帖最后由 黑夜彩虹 于 2006-8-8 08:47 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2006-8-8 10:18:47 | 显示全部楼层
    原帖由 黑夜彩虹 于 2006-8-8 08:41 发表
    计算到第4步,结果为:dflk5632129T.cOm47751dl5319.O    (29位,非40位)

    最后结果等于:igxn7;2&404U:fM`5#27<ex01<8:J

    不知道对不对?


    不是的。/:?
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-8-26 14:30:55 | 显示全部楼层
    程序写的有点问题

    结果是: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;

    function  OpeateStr(const str3 :string): string;    //字符逐位 xor   运算
    const
      snLen = 5 ;
      sn:array[1..snLen] 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[n]);
      end;
      Result := a;
    end;


    procedure TForm1.Button1Click(Sender: TObject);
    begin
      edit2.Text :=OpeateStr(DoubleStr(trim(edit1.Text)));
    end;

    [ 本帖最后由 hnxyy 于 2006-8-26 14:33 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-8-26 14:44:59 | 显示全部楼层
    H哥也来了。。。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-8-26 14:46:31 | 显示全部楼层
    /:D黑版以后多多提携啊~~~~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-8-26 14:51:42 | 显示全部楼层
    H哥谦虚了不是~~,互相学习...
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表