删除ansiString中的char

Gle*_*rse -1 delphi delphi-xe2

我有这个ansiString例如

DISC506002000001008100021041511207123051520515308154091550920TN177869-0151J1     36J207 70077       0                 0
Run Code Online (Sandbox Code Playgroud)

试图提取 TN177869-0151J1

但我正在使用的代码不断返回整个ansistring.

function TForm5.ParseDataPartNumber(Data: AnsiString):ansistring;
var
   ExtraData: Ansistring;
begin
    extraData := data;
    Delete(extraData,76,30);
    Delete(extraData,0,61);
    result:=extraData;
end;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?是因为它是一个ansistring而不是字符串?那让我失望了?

RRU*_*RUZ 9

您的代码无效,因为您在Delete方法的参数中传递了错误的值.无论如何你可以Copy像这样使用这个功能

function TForm5.ParseDataPartNumber(const Data: AnsiString): ansistring;
begin
    Result:=Copy(Data, 62,15);
end;
Run Code Online (Sandbox Code Playgroud)

  • @Lieven它的性能不如清晰度和简洁性.这是一个很好的结果. (5认同)
  • 当前接受的答案更好地解决了OP的原始问题,但从性能的角度来看,这是OP应该实现的解决方案.1复制速度比2次删除快. (4认同)