下面有两段代码,一段是vb6的原码,一段是我翻译成delphi 的,请各位朋友帮我检查一下那里有错误!!多谢多谢!解决立即给分!
vb代码:Randomize
offset = 0
length = 128
For i = 1 To 128
wi = Rnd * 127
databuff2(i - 1) = wi
Next iwi = Val(txtFields(0).Text)
wig = (wi \ 128) * 2
wid = (wi - wig \ 2) * 2
databuff2(0) = wid
databuff2(7) = wig
wi = 0
For i = 7 To 0 Step -1
databuff2(i) = (databuff2(i) \ 2) * 2
If (wi Mod 2) = 1 Then
databuff2(i) = databuff2(i) + 1
End If
wi = wi \ 2
Next i
databuff2(8) = 5
databuff2(9) = 17
st = swr_24c01a_hex(icdev, offset, length, databuff2(0))
If st < 0 Then
    MsgBox "写ic卡错!", , "错误提示"
    st = ic_exit(icdev)
  Exit SubEnd If
st = ic_exit(icdev)
    MsgBox "初始化已经完成,请拔出ic卡!", , "完成提示"
delphi代码:offset:=0;
len:= 128;
//Randomize
For i:= 1 To 128 do
begin
wi:=random(1) * 127;
databuff2[i-1]:= wi;
next;
end;Val(self.Edit1.Text,wi,code);
wig:= (wi div 128) * 2;
wid:= (wi - wig div 2) * 2;
databuff2[0]:= wid;
databuff2[7]:= wig;
wi:= 0;
For i:= 7 downTo 0 do
begin
    databuff2[i]:= (databuff2[i] div 2) * 2;
   If (wi Mod 2) = 1 Then
    databuff2[i]:= databuff2[i] + 1;   wi:= wi div 2;
   next;
end;
databuff2[8]:= 5;
databuff2[9]:= 17;
st:= swr_24c01a_hex(icdev, offset, len, databuff2[0]);
If st < 0 Then
begin
    application.MessageBox('写ic卡错!','错误提示');
    st:= ic_exit(icdev);
  Exit;
end;st:= ic_exit(icdev);
    application.MessageBox('初始化已经完成,请拔出ic卡!','完成提示');

解决方案 »

  1.   

    没仔细看,不过在使用random前那个Randomize还是要加上,否则随机数得到的不随即
      

  2.   

    如果加上Randomize就会提示‘操作数丢失’,请问我写的代码是否能和原代码对应?请指点!
      

  3.   

    For i:= 7 downTo 0 do
    begin
        databuff2[i]:= (databuff2[i] div 2) * 2;
       If (wi Mod 2) = 1 Then
        databuff2[i]:= databuff2[i] + 1;   wi:= wi div 2;
       //next;
    end;next 沒有用吧
      

  4.   

    加上了randomize还是不行,大家帮我在检查一下!!
      

  5.   

    offset:=0;
    len:= 128;
    Randomize;
    For i:= 1 To 128 do
    begin
    wi:=random(1) * 127;
    databuff2[i-1]:= wi;
    next;
    end;如果是random(1);则wi 会始终为0。那么就不能随机付值了。