谁能帮我把这段VB源码转换成delphi啊
PrivateSubcrackR()DimiAsLongDimtmpbyte1AsByteDimtmpbyte2AsByteDimfilenum1AsLong,filen...
Private Sub crackR()
Dim i As Long
Dim tmpbyte1 As Byte
Dim tmpbyte2 As Byte
Dim filenum1 As Long, filenum2 As Long
'read list from idx file one by one (4byte)
filenum1 = OpenBin(App.Path & "\ranger.idx", "R")
'data == idxRole
ReDim data(LOF(filenum1) / 4 - 1)
Get filenum1, , data
Close (filenum1)
FileCopy App.Path & "\ranger..grp", App.Path & "\ranger.grp.enc"
filenum1 = OpenBin(App.Path & "\ranger..grp", "R")
filenum2 = OpenBin(App.Path & "\r1.grp.enc", "W")
For i = 1 To MIN(800, data(2) - data(1))
Get filenum1, data(0) + i, tmpbyte1
Get filenum1, 36 + i, tmpbyte2
Put filenum2, data(0) + i, tmpbyte2
Put filenum2, 36 + i, tmpbyte1
Next i
For i = 1 To MIN(data(2) - data(1), data(4) - data(3))
Get filenum1, data(1) + i, tmpbyte1
Get filenum1, data(3) + i, tmpbyte2
Put filenum2, data(1) + i, tmpbyte2
Put filenum2, data(3) + i, tmpbyte1
Next i
Close (filenum2)
Close (filenum1)
MsgBox "DONE"
End Sub
注释:
' status = "R" 读
' status = "W" 写
VB不怎么明白 帮帮忙啦~
对了,忘了这个 Dim data() As Long
最好是还能帮我解读一下哦delphi代码中的函数对应的VB函数的功能
比如ReDim data(LOF(filenum1) / 4 - 1) 如果转换成setlength(xxx,XXX);该怎么写
我知道需要重新写啊 但是我读懂这段代码都比较困难 更不知道怎么用VB实现这段代码了 谁帮我写写 给个方法出来我就明白了 展开
Dim i As Long
Dim tmpbyte1 As Byte
Dim tmpbyte2 As Byte
Dim filenum1 As Long, filenum2 As Long
'read list from idx file one by one (4byte)
filenum1 = OpenBin(App.Path & "\ranger.idx", "R")
'data == idxRole
ReDim data(LOF(filenum1) / 4 - 1)
Get filenum1, , data
Close (filenum1)
FileCopy App.Path & "\ranger..grp", App.Path & "\ranger.grp.enc"
filenum1 = OpenBin(App.Path & "\ranger..grp", "R")
filenum2 = OpenBin(App.Path & "\r1.grp.enc", "W")
For i = 1 To MIN(800, data(2) - data(1))
Get filenum1, data(0) + i, tmpbyte1
Get filenum1, 36 + i, tmpbyte2
Put filenum2, data(0) + i, tmpbyte2
Put filenum2, 36 + i, tmpbyte1
Next i
For i = 1 To MIN(data(2) - data(1), data(4) - data(3))
Get filenum1, data(1) + i, tmpbyte1
Get filenum1, data(3) + i, tmpbyte2
Put filenum2, data(1) + i, tmpbyte2
Put filenum2, data(3) + i, tmpbyte1
Next i
Close (filenum2)
Close (filenum1)
MsgBox "DONE"
End Sub
注释:
' status = "R" 读
' status = "W" 写
VB不怎么明白 帮帮忙啦~
对了,忘了这个 Dim data() As Long
最好是还能帮我解读一下哦delphi代码中的函数对应的VB函数的功能
比如ReDim data(LOF(filenum1) / 4 - 1) 如果转换成setlength(xxx,XXX);该怎么写
我知道需要重新写啊 但是我读懂这段代码都比较困难 更不知道怎么用VB实现这段代码了 谁帮我写写 给个方法出来我就明白了 展开
4个回答
展开全部
Dim data() As Long//声明一个数组
var array[] data:integer;
ReDim data(LOF(filenum1) / 4 - 1)//重新声明这个数组的长度,lof下标
setlength(filenmu1,high(filenum1) div 4 -1);//delphi的语法更简单
Private Sub crackR()//声明一个函数
procedure crackR();//delphi的声明更简洁,写在Private区段中
Dim tmpbyte1 As Byte//声明一个变量
var tmpbyte1:Byte;//以此类推
delphi中的文件读写,有多个方法,有blockread,filestream等,比如filestream
Afilestream:=TFilestream.create(filepath,...);
for i = 0 to Afilesteam.size-1
Afilestream.write(Abuf,sizeof(Abuf));
var array[] data:integer;
ReDim data(LOF(filenum1) / 4 - 1)//重新声明这个数组的长度,lof下标
setlength(filenmu1,high(filenum1) div 4 -1);//delphi的语法更简单
Private Sub crackR()//声明一个函数
procedure crackR();//delphi的声明更简洁,写在Private区段中
Dim tmpbyte1 As Byte//声明一个变量
var tmpbyte1:Byte;//以此类推
delphi中的文件读写,有多个方法,有blockread,filestream等,比如filestream
Afilestream:=TFilestream.create(filepath,...);
for i = 0 to Afilesteam.size-1
Afilestream.write(Abuf,sizeof(Abuf));
展开全部
不可以,
VB 和 delphi 的语言方式不同,如果你需要把这段代码的功能写在delphi里,有一个办法,就是利用delphi重新写你VB中代码的功能
VB 和 delphi 的语言方式不同,如果你需要把这段代码的功能写在delphi里,有一个办法,就是利用delphi重新写你VB中代码的功能
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种新版VB的语法不熟悉。
暂时没法帮你。
不过得告诉你一点,SetLength只能改变动态数组的大小。
我看你的filenum1不是数组
……
所以我赞同一楼的观点,还是从新写来得方便。
暂时没法帮你。
不过得告诉你一点,SetLength只能改变动态数组的大小。
我看你的filenum1不是数组
……
所以我赞同一楼的观点,还是从新写来得方便。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询