Public Function GetChecksum(AsciText As String) As Integer
Dim i As Integer
For i = 1 To Len(AsciText)
GetChecksum = GetChecksum Xor Asc(Mid$(AsciText, i, 1))
Next i
End Function
我不知道" Mid $"关于德尔福。
答案 0 :(得分:1)
首先,该代码不是VB.net,而是VB6或VBA。现在,Mid$
是提取子字符串的函数。在Delphi中,它对应于Copy
。但是,由于您只提取单个字符,因此应使用[]
索引运算符。总的来说,这个功能看起来像这样。
function GetChecksum(const Input: AnsiString): Integer;
var
i: Integer;
begin
Result := 0;
for i := 1 to Length(Input) do
Result := Result xor ord(Input[i]);
end;
我相信在原始的VB6代码中Integer
是一个16位的值。在Delphi Integer
中是一个32位的值。我不认为这很重要,因为只使用了低8位。您可以将Delphi代码的返回类型更改为8位无符号Byte
类型。
另请注意,您必须满足于您的代码依赖于使用8位编码进行编码的文本。如果你想使用Unicode文本,你打算做什么?
答案 1 :(得分:-2)
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
ListBox1.Items.Clear()
Try
Dim wc As New Net.WebClient
wc.Encoding = System.Text.Encoding.Default
Dim wb As New System.Net.WebClient
Dim sr As String = wb.DownloadString("")
Dim regex As New Regex("")
Dim matches As MatchCollection = regex.Matches(sr)
For Each element As Match In matches
ListBox1.Items.Add(element.Value)
Next
Catch ex As Exception
End Try
End Sub