怎么把这段JAVA转换为delphi

如何把这段JAVA转换为delphi
public class EncryptUtil
{

public EncryptUtil()
{
}

public long epass()
{
long mc = 0x8dfe657a719L;
String ppass = "test";
long plen = ppass.length();
for (int i = 0; (long)i < plen; i++)
mc ^= ppass.charAt(i) | 0x80;

return mc;
}

public String encrypt(String inString)
{
long nPwd = epass();
char cpass[] = new char[inString.length()];
String strTemp = "";
for (int i = 0; i < inString.length(); i++)
{
cpass[i] = inString.charAt(i);
cpass[i] ^= nPwd;
cpass[i] &= '\377';
}

for (int i = 0; i < cpass.length; i++)
strTemp = (new StringBuilder(String.valueOf(strTemp))).append(cpass[i]).toString();

return strTemp;
}
}

------解决方案--------------------
不懂java,尝试写了下,不知对错,希望没有误导汝,错了LX给修正怎么把这段JAVA转换为delphi


type
  TEncryptUtil = class
  public
    function Epass: Int64;
    function Encrypt(inString: AnsiString): AnsiString;
  end;

function TEncryptUtil.Encrypt(inString: AnsiString): AnsiString;
var
  nPwd: Int64;
  cpass: array of AnsiChar;
  i, len: Integer;
begin
  Result := '';
  nPwd := Epass;
  len := Length(inString);
  SetLength(cpass, len);
  ZeroMemory(cpass, Length(cpass));
  for i := 0 to len - 1 do
  begin
    cpass[i] := inString[i + 1];
    cpass[i] := Chr(Ord(cpass[i]) xor nPwd);
    cpass[i] := Chr(Ord(cpass[i]) and 377);
  end;

  len := Length(cpass);
  for i := 0 to len - 1 do
    Result := Result + cpass[i];
end;

function TEncryptUtil.Epass: Int64;
var
  ppass: AnsiString;
  pLen: Int64;
  i: Integer;
begin
  Result := $8DFE657A719;
  ppass := 'test';
  pLen := Length(ppass);
  for i := 0 to pLen - 1 do
    Result := Result xor (Byte(ppass[i + 1]) or $80);
end;