【问题标题】:Delphi to VBNet Code Conversion (How to?)Delphi 到 VBNet 代码转换(如何?)
【发布时间】:2012-05-09 07:38:40
【问题描述】:

我有这个 Delphi 代码:

function EnDeCrypt(const Value : String) : String;
var
CharIndex : integer;
begin
    Result := Value;
    for CharIndex := 1 to Length(Value) do
    Result[CharIndex] := chr(not(ord(Value[CharIndex])));
end;

如何翻译成.Net?

【问题讨论】:

  • 您使用的是什么编码?我假设的 Delphi 代码假定为 ANSI,但 .net 非常面向 Unicode。您接受的答案是基于 Unicode 的。给定某些输入,您接受的答案将导致无效字符串。
  • 你使用什么编码?
  • 我无法回答您的问题,因为我不了解编码。但答案是一样的。为什么会这样?
  • 在我的测试中,您接受的答案不会解码字符串。我怀疑除非您解决了编码问题,否则您很可能会为将来积攒麻烦。一些快速的单向测试可能不够全面。你能告诉我你的代码是用什么版本的 Delphi 编译的吗?
  • 其实是我朋友的代码。他正在使用 delphi 6。让我试试你的答案。

标签: vb.net delphi


【解决方案1】:

如果 RRUZ 提供的功能(现已删除)确实是您想要的(而且我仍然对编码问题持怀疑态度),那么您可以这样写:

Private Function EnDeCrypt(ByVal Value As String) As String

    Dim transformed = Encoding.Unicode.GetBytes(Value).Select( _
        Function(item) Not item)
    Return Encoding.Unicode.GetString(transformed.ToArray())

End Function

【讨论】:

  • transformed的数据类型是什么?因为我启用了Option Strict ON
  • @johntotetwoo 是的,是IEnumerable(Of Byte)
  • +1 你的答案更简短更好:),现在你可以删除关于我的答案的 cmets。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 2011-09-08
相关资源
最近更新 更多