几年没用delphi都忘差不多了,以下这段简单的取序列号的java代码,哪位能帮我用delphi翻译出来,多谢了!public class Licence {
public static long getSerialNum(String str) {
if (str == null) {
return 0;
}
byte[] bt = str.getBytes();
int leng = bt.length;
long sn = 0;
for (int i = 0; i < leng; i++) {
sn += bt[i] * getPowerNum(leng - i - 1);
}
return sn;
} public static long getPowerNum(int n) {
long num = 1;
for (int i = 0; i < n; i++) {
num *= 8.62;
}
return num;
} public static void main (String[] args) {
String school="school";//args[0];
String mac="00-E0-4C-50-00-50";//args[1];
String sn=String.valueOf(getSerialNum(school+mac));
System.out.println (sn);
    }
}

解决方案 »

  1.   

    function GetPowerNum(n:integer):int64;
    var
    i:integer;
    num:double;
    begin
    num:=1;
    for i:=0 to n-1 do
      num:=num*8.62;
    result:=trunc(num);
    end;function GetSerialNum(str:string):int64;
    var
    bt:array of byte;
    leng,sn,i:integer;
    begin
    sn:=0;
    if str='' then
       begin
       result:=0;
       exit;
       end;
    leng:=length(str);
    setlength(bt,leng);
    for i:=1 to leng do
       bt[i-1]:=ord(str[i]);
    for i:=0 to leng-1 do
       sn:=sn+(bt[i]*getPowerNum(leng - i - 1));
    result:=sn;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
    school,mac,sn:string;
    begin
    school:='school';
    mac:='00-E0-4C-50-00-50';
    sn:=inttostr(getSerialNum(school+mac));
    showmessage(sn);
    end;
      

  2.   

    运行到这行:
    sn:=inttostr(getSerialNum(school+mac)); 
    提示出错:Invalid floating point operation