秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  278 随笔 :: 0 文章 :: 308 评论 :: 20万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1、从delphi转lazarus for linux,如果原来代码用CopyMemory和ZeroMemory编译时会出错。移植代码时可以用move替换CopyMemory,FillChar替换ZeroMemory,最简单的方法是自己按以下方法写CopyMemory和ZeroMemory。

复制代码
{$ifdef linux}
procedure CopyMemory(Destination, Source:pointer; Length:DWORD);
begin
  Move(Source^, Destination^, Length);
end;

procedure ZeroMemory(Destination:pointer; Length:DWORD);
begin
  FillChar(Destination^,Length,#0);
end;
{$endif} 
复制代码

2、TEncoding.Default.GetBytes(IvStr);返回的不是正确的,用StrToBytes替换TEncoding.Default.GetBytes就可以。

复制代码
function StrToBytes(const S: AnsiString): TBytes;
begin
  if S <> '' then
  begin
    SetLength(Result, Length(S));
    Move(S[1], Result[0], Length(S));
  end
  else
    Result := nil;
end;

function BytesToStr(Data: TBytes): AnsiString;
begin
  if Length(Data) > 0 then
  begin
    SetLength(Result, Length(Data));
    Move(Data[0], Result[1], Length(Data));
  end
  else
    Result := '';
end;
复制代码

 

      IvBytes := TEncoding.Default.GetBytes(IvStr);
改为:
      IvBytes := StrToBytes(IvStr);

 

posted on   秋·风  阅读(573)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示