【发布时间】:2019-03-11 10:47:15
【问题描述】:
我有一个代码,可以从备忘录行中搜索和删除。但是有一个小问题,例如,备忘录行包含 1、11、12、13、21、22 等。当 e=1 时,它会删除所有包含 1 的行。 我只需要删除已定义的搜索 (e=1)
for i := 0 to memo3.lines.count-1 do
begin
if (pos(IntToStr(e), Memo3.Lines[i]) > 0) then begin
Memo3.Lines.Delete(i);
Memo3.Lines.Delimiter := '-';
Memo3.Lines.StrictDelimiter := True;
t:= Memo3.Lines.DelimitedText;
Label5.Caption:=t;
end;
【问题讨论】:
-
您需要定义更准确的条件。例如,要删除的字符串是否应该只包含
1而仅此而已?顺便说一句,你的 for 循环不适合删除行,因为计数可能会改变。 -
我添加了图像文件作为示例。我的代码在 e=1 时删除了 1,11, 31,我只想删除 '1'
-
所以比较
if Memo3.Lines[i] = e,而不是pos -
谢谢兄弟。你说的对。没有 pos 效果很好。
-
查看我的答案,“每行一个数字?” 部分。 你应该从顶部倒数的事实仍然存在。 @MBo 几乎是正确的,如果你将 Integer e 变成一个字符串(我的回答中的 NumStr )。并且不要重复调用 IntToStr(e),只需调用一次并记住结果(在 NumStr 中),在循环之前。
标签: delphi delphi-2010