gpt4 book ai didi

delphi - 忽略 StringList 的指定项目

转载 作者:行者123 更新时间:2023-12-02 03:24:11 24 4
gpt4 key购买 nike

我想创建一个程序(学习 Delphi),它需要 3 个不同的列表(来自 TEdit)

  1. 姓名列表
  2. 搜索第一个列表时要忽略的名称列表
  3. 搜索第一个列表时要忽略的名称列表

通过使用 3 TEdit 并将文本转换为 TStringList 并分离(到目前为止我对此还满意)。

我想输出第一个列表的名字(或项目),该列表既不在第二个列表中,也不在第三个列表中

procedure TForm1.Button1Click(Sender: TObject);
var
i, j ,k : integer;
begin


list := TStringList.Create;
ignoreListFirst := TStringList.Create;
ignoreListSecond := TStringList.Create;

list.Delimiter := ',';
ignoreListFirst.Delimiter := ',';
ignoreListSecond.Delimiter := ',';

list.DelimitedText := EditList.Text;
ignoreListFirst.DelimitedText := EditIgnoreList1.Text;
ignoreListSecond.DelimitedText := EditIgnoreList2.Text;

for k := 0 to list.Count - 1 do
begin
for i := 0 to ignoreListFirst.Count - 1 do
begin
for j := 0 to ignoreListSecond.Count - 1 do
begin
if (list[k] <> ignoreListFirst[i]) and (list[k] <> ignoreListSecond[k]) then

EditResult.Text := list[k];
break;

end;
end;
end;

list.Free;
ignoreListFirst.Free;
ignoreListSecond.Free;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
EditList.Text := 'Katy,Mary,John,Maggie,Carl';
EditIgnoreList1.Text := 'Katy,Mary,John';
EditIgnoreList2.Text := 'John,Carl';
end;

尝试交换循环顺序,看看是否可以查明问题。

最后一个循环中的第一个列表没有给我任何错误,并生成名称“Katy”,是的,列表中的第一个但被忽略。

将第一个列表交换为第一个循环。产生“Mary”,我猜忽略了(我想要的)Katy,但据我所知,没有其他人。

在此示例中(不起作用),我希望它生成不在任一忽略列表中的“Maggie”。

谢谢,如果我解释错误的话,我们深表歉意。学习德尔福。请指出任何错误。

最佳答案

在摆弄调试器并遵循给出的建议时,我得到了下面的答案。

procedure TForm1.Button1Click(Sender: TObject);
var
iList, iListFirst ,iListSecond : integer;
found : boolean;
begin

list := TStringList.Create;
ignoreListFirst := TStringList.Create;
ignoreListSecond := TStringList.Create;

list.Delimiter := ',';
ignoreListFirst.Delimiter := ',';
ignoreListSecond.Delimiter := ',';

list.DelimitedText := EditList.Text;
ignoreListFirst.DelimitedText := EditIgnoreList1.Text;
ignoreListSecond.DelimitedText := EditIgnoreList2.Text;

for iList := 0 to list.Count - 1 do
begin
for iListFirst := 0 to ignoreListFirst.Count - 1 do
begin
found := false;
if list[iList] = ignoreListFirst[iListFirst] then
begin
found := true;
break
end;
end;
if not found then
begin
for iListSecond := 0 to ignoreListSecond.Count - 1 do
begin
if list[iList] = ignoreListSecond[iListSecond] then
begin
found := true;
break
end;
end;
end;
if not found then
begin
EditResult.Text := list[iList];
break
end;
end;

list.Free;
ignoreListFirst.Free;
ignoreListSecond.Free;

end;

关于delphi - 忽略 StringList 的指定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56363514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com