求赐教:VB函数转delphi

Yothan 2014-10-10 02:17:29
以下的一个函数应该是将一个字符串转为编码UNICODE UTF-16的 byte数组。经过调试,发现转出来的byte数组内容是乱码(这是正确的)。因为没有领悟这个函数真正的意图,我试图转为delphi,直接转为16进制的unicode是不行的。尝试了很多方法,没成功,请赐教~
Public Function UnicodeEncode(bTemp As String) As Byte()
'编码UNICODE UTF-16
Dim i As Long
Dim k As Long

Dim strTotal() As Byte
Dim Code As Long
Dim bNo As Long

k = Len(bTemp)
ReDim strTotal(k * 2)
strTotal(0) = CByte("00")
bNo = 0

For i = 1 To k
Code = CLng("&H" + Hex(AscW(Mid(bTemp, i, 1))))
strTotal(bNo) = Code \ 256
strTotal(bNo + 1) = Code And 255
bNo = bNo + 2
Next

ReDim Preserve strTotal(bNo - 1)
UnicodeEncode = strTotal
End Function
...全文
185 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊孩子开学喽 2014-10-17
  • 打赏
  • 举报
回复
引用 4 楼 yueyun889 的回复:
[quote=引用 3 楼 WallesCai 的回复:] 能自己解决最好, 原本的VB函数不是很复杂, 即使不知道原理, 直接硬改成delphi也不是不行. 纯代码的一般都能改, 遇到用控件,对象什么的就麻烦点了.
虽然源函数不复杂,不过他的真正意图我还是未能理解,特别是后面的 Code \ 256 , Code And 255,不知有何用意?[/quote] 就是把long型数值拆分
Yothan 2014-10-16
  • 打赏
  • 举报
回复
引用 3 楼 WallesCai 的回复:
能自己解决最好, 原本的VB函数不是很复杂, 即使不知道原理, 直接硬改成delphi也不是不行. 纯代码的一般都能改, 遇到用控件,对象什么的就麻烦点了.
虽然源函数不复杂,不过他的真正意图我还是未能理解,特别是后面的 Code \ 256 , Code And 255,不知有何用意?
熊孩子开学喽 2014-10-11
  • 打赏
  • 举报
回复
能自己解决最好, 原本的VB函数不是很复杂, 即使不知道原理, 直接硬改成delphi也不是不行. 纯代码的一般都能改, 遇到用控件,对象什么的就麻烦点了.
Yothan 2014-10-10
  • 打赏
  • 举报
回复
之所以想转是因为不知道原函数的真正意图是什么,有时候一句代码的差别就会导致函数返回结果的错误。 不过这个函数我已经找到正确的转换方法了,真正应了那句话:求人不如求己! arrByte: array of byte;
Function ConvertUnicode(const ChineseStr: WideString): arrByte;
  var
  i, k, bNo, code: LongInt;
  strTotal: arrByte;
  n, n1,str: string;
begin
  k := Length(ChineseStr);
  SetLength(strTotal, k*2);
  strTotal[0] := 00;
  bNo := 0;
  For i := 1 To k do
  begin
    n1 := Copy(ChineseStr, i, 1);
    n := UnicodeEncodes(n1);
    code := StrToInt('$' + n);
    strTotal[bNo] := Code div 256;
    strTotal[bNo + 1] := Code And 255;
    bNo := bNo + 2;
  end;
  Result := strTotal;
end;
X-i-n 2014-10-10
  • 打赏
  • 举报
回复
为什么非要从VB的代码转……直接网上搜delphi的代码就好啦。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧