delphi - 将字节数组转换为 PAnsiChar

标签 delphi delphi-xe2

我使用以下方法将名为“TmpData”的字节数组转换为 PAnsiChar:

PAnsiChar(@TmpData[0]);

但有些数据有换行符。如何删除换行符?请看下图

Line breaks

最佳答案

请注意,在下面的答案中,我假设您的字节数组是 ANSI 编码的且以零结尾。

<小时/>

将数据分配给字符串:

var
  str: string;
....
str := string(PAnsiChar(@TmpData[0]));

然后删除换行符:

str := StringReplace(str, sLineBreak, '', [rfReplaceAll]);

您可能希望删除单个 #10#13 字符,或删除所有空白字符。这取决于您的需求,但本质就在这里。

或者,您可以遍历字节数组,删除您想要删除的所有字节,例如值为 10 和 13,或值小于 32。然后转换为 PAnsiChar

idxDst := 0;
idxSrc := 0;
while TmpData[idxSrc] <> 0 do begin
  if TmpData[idxSrc] >= 32 then begin
    TmpData[idxDst] := TmpData[idxSrc];
    inc(idxDst);
  end;
  inc(idxSrc);
end;
TmpData[idxDst] := 0;

关于delphi - 将字节数组转换为 PAnsiChar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34179711/

相关文章:

delphi - 使用 RttiContext 在运行时查找类型

sqlite - 德尔福和SQLite : Get the records count per month for the last 12 months

德尔福快速报告 : Band order to achieve detail-child-child-child banding?

delphi - 动态数组是否支持非零下限(为了 VarArrayCreate 兼容性)?

delphi - 如何获得德尔福天数中的日期差异?

delphi - RAD Studio XE 2010 : Graphics32 compilation problem

delphi - 如何在字符串中搜索子字符串的多种变体

windows - 为什么 CreateProcess 给出错误 193(%1 不是有效的 Win32 应用程序)

如果您使用样式,Delphi TListView DoubleBuffered 不起作用

Delphi CompilerVersion指令问题