我有这个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;
我做错了什么?是因为它是一个ansistring而不是字符串?那让我失望了?
答案 0 :(得分:9)
您的代码无效,因为您在Delete
方法的参数中传递了错误的值。无论如何,您可以使用Copy
功能,而不是像这样
function TForm5.ParseDataPartNumber(const Data: AnsiString): ansistring;
begin
Result:=Copy(Data, 62,15);
end;
答案 1 :(得分:2)
字符串是基于1的,因此将第二次删除更改为索引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;
你的索引也错误地提取了那个字符串。我的答案显示了更改的值。