谁能帮我把这段VB源码转换成delphi啊

来源:百度知道 编辑:UC知道 时间:2024/06/08 21:44:44
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

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));

不可以,

VB 和 delphi 的语言方式不同,如果你需要把这段代码的功能写在delphi里,有一个办法,就是利用delphi重新写你VB中代码的功能

这种新版VB的语法不熟悉。
暂时没法帮你。
不过得告诉你一点,SetLength只能改变动态数组的大小。
我看你的filenum1不是数组
……
所以我赞同一楼的观点,还是从新写来得方便。

行不通