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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~