如何将此代码从VB转换为Delphi

时间:2016-01-08 08:03:05

标签: vb.net delphi

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 $"关于德尔福。

2 个答案:

答案 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