cjteam 发表于 2010-12-20 10:15:16

delphi注册机在Ord错误解决思路

本帖最后由 cjteam 于 2010-12-20 11:32 编辑

首先我们来看看注册机的代码.function dz(s:string):string;
var
i:integer;
begin
   for i:=1 to length(s) do
    result:=s+result;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
i:integer;
a:string;
begin
for i:= 1 to length(edit1.Text) do
    a:=a+inttohex(ord(edit1.text),2);
edit2.Text:='JXCw-'+copy(dz(a),1,4)+'268d5-'+copy(dz(a),5,4);
end;
--------------------------------------------------------
使用这个代码是怎么也编译不了,提示错误Incompatible types,中文为不兼容的类型。

就这句 a:=a+inttohex(ord(edit1.text),2); 在Delphi7下过不去,查找资料,原来是Delphi7 的ord()函数只能给字符,也就是char型.

引用原文的话:在翻译vb的程序时,发现一个以前认为是正确的现在看来并不是那么回事的现象,就是 vb里的mid()函数和Delphi理的copy 并不是一回事,即mid(s,1,1)也不等于copy(s,1,1),很简单,MSDN描述的mid是从字符串中返回指定数目的字符。也就是返回的char型,而copy返回的string型。

原理:ord接受的类型是char,而我们的编辑框内容是字符串,显然不匹配了。

其实这个是原写注册机的笔误,下面提供修正的代码:function dz(s:string):string;
var
i:integer;
begin
   for i:=1 to length(s) do
    result:=s+result;
end;

procedure TForm1.Edit1Change(Sender: TObject);
var
i:integer;
a:string;
begin
for i:=1 to length(edit1.text) do
    a:=a+inttohex(ord(edit1.text),2);
edit2.Text:='JXCw-'+copy(dz(a),1,4)+'268d5-'+copy(dz(a),5,4);
end;参考链接:http://www.hackline.net/a/school/ymbc/delphi/2010/0603/4280.html

whypro 发表于 2010-12-20 18:57:54

顶你的帖子!

cjteam 发表于 2010-12-20 19:36:52

顶你的帖子!
whypro 发表于 2010-12-20 18:57 https://www.chinapyg.com/images/common/back.gif


    :loveliness: 大牛太客气了哈

erui2008 发表于 2010-12-22 14:10:22

顶你,现在用delphi的人越来越少了!!!
页: [1]
查看完整版本: delphi注册机在Ord错误解决思路