删除 ansiString 中的字符

Deleting char's in a ansiString

例如我有这个 ansiString

DISC506002000001008100021041511207123051520515308154091550920TN177869-0151J1     36J207 70077       0                 0

正在尝试提取 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;

我做错了什么?是因为它是反字符串而不是字符串吗?那让我失望了?

您的代码无法正常工作,因为您在 Delete method. Anyway you can use the Copy 函数的参数中传递了错误的值,而不是像这样

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

字符串是基于 1 的,因此请将您的第 2 个 Delete 更改为索引 1 而不是 0。

即:

function TForm5.ParseDataPartNumber(Data: AnsiString):ansistring;
var
   ExtraData: Ansistring;
begin
    extraData := data;
    Delete(extraData,77,43);
    Delete(extraData,1,61);
    result:=extraData;
end;

您的索引也有误,无法提取该字符串。我的回答显示更改的值。