删除问号

时间:2013-10-25 11:45:51

标签: delphi delphi-xe3

删除问号时遇到问题。我不想在我的SQL数据库中使用它们。 但我的代码不起作用,我不知道问题出在哪里。

function RemoveQMark(sWork: String): String;
begin
  Delete(sWork, 2, 4);
  Delete(sWork, Length, 2);
  Result := sWork;
end;

我想在第一个和最后一个位置删除?

2 个答案:

答案 0 :(得分:6)

不需要在传入的字符串中使用Delete。只需使用Delphi Copy函数将除了第一个和最后一个字符之外的所有字符直接复制到结果中:

function RemoveQMark(const sWork: String): String;
begin
  Result := Copy(sWork, 2, Length(sWork) - 2);
end;

使用const on string arguments允许编译器生成更高效的代码。 (没有const,字符串引用计数在函数开始时递增,在结束时递减(在try ... finally块中))。

答案 1 :(得分:1)

function RemoveQMark(sWork: String): String;
begin
  Delete(sWork, 1, 1);
  Delete(sWork, Length(sWork), 1);
  Result := sWork;
end;