将字节数组转换为PAnsiChar

时间:2015-12-09 13:11:56

标签: delphi delphi-xe2

我转换了一个名为' TmpData'的字节数组。到PAnsiChar使用:

PAnsiChar(@TmpData[0]);

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

Line breaks

1 个答案:

答案 0 :(得分:1)

请注意,在下面的答案中,我假设你的字节数组是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;