冥界3大法王 发表于 2024-9-26 14:04

两个StringList能进行比较吗?

unit Unit11;


interface


uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls;


type
TForm11 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;


var
Form11: TForm11;


implementation


{$R *.dfm}


procedure TForm11.Button1Click(Sender: TObject);
var
StringList1, StringList2: TStringList;
begin
StringList1 := TStringList.Create;
StringList2 := TStringList.Create;
try
    // 添加字符串到第一个列表
    StringList1.Add('大白补丁');
    StringList1.Add('沙盘');
    StringList1.Add('快速搜索');


    // 添加字符串到第二个列表
    StringList2.Add('大白补丁A');
    StringList2.Add('沙盘');
    StringList2.Add('快速搜索BBB');


    // 比较两个 TStringList
    if StringList1.Equals(StringList2) then   ==============》把这里改成后者列表 是否包含 前者列表之一
      ShowMessage('两个 TStringList 相等')
    else
      ShowMessage('两个 TStringList 不相等');


finally
    StringList1.Free;
    StringList2.Free;
end;
end;


end.

a952135763 发表于 2024-9-26 14:33

凭直觉我估计不行
Equals 直接比较地址了不会比较列表数据是否相等

冥界3大法王 发表于 2024-9-26 14:46

a952135763 发表于 2024-9-26 14:33
凭直觉我估计不行
Equals 直接比较地址了不会比较列表数据是否相等

查帮助了,似乎没有直接的方法

homejun 发表于 2024-9-26 15:13

比较它们的text属性

Nettos 发表于 2024-9-26 15:16

我有个想法,你觉得转MD5来比较咋样,如果担心MD5冲突,转哈希来比较值

lovemit 发表于 2024-9-26 15:39

for循环。{:1_918:}

lies2014 发表于 2024-9-26 15:56

StringList1, StringList2 定义为 TStrings 就可以了

unit Unit11;


interface


uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls;


type
TForm11 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;


var
Form11: TForm11;


implementation


{$R *.dfm}


procedure TForm11.Button1Click(Sender: TObject);
var
StringList1, StringList2: TStrings;
begin
StringList1 := TStringList.Create;
StringList2 := TStringList.Create;
try
    // 添加字符串到第一个列表
    StringList1.Add('大白补丁');
    StringList1.Add('沙盘');
    StringList1.Add('快速搜索');


    // 添加字符串到第二个列表
    StringList2.Add('大白补丁A');
    StringList2.Add('沙盘');
    StringList2.Add('快速搜索BBB');


    // 比较两个 TStringList
    if StringList1.Equals(StringList2) then   ==============》把这里改成后者列表 是否包含 前者列表之一
      ShowMessage('两个 TStringList 相等')
    else
      ShowMessage('两个 TStringList 不相等');


finally
    StringList1.Free;
    StringList2.Free;
end;
end;


end.

冥界3大法王 发表于 2024-9-26 16:02

lies2014 发表于 2024-9-26 15:56
StringList1, StringList2 定义为 TStrings 就可以了

unit Unit11;


怪我没说清,
if 列表1元素被列表2元素包括,
输出列表2,当前索引值(字串)

lies2014 发表于 2024-9-26 16:16

冥界3大法王 发表于 2024-9-26 16:02
怪我没说清,
if 列表1元素被列表2元素包括,
输出列表2,当前索引值(字串)

这个可能只有自己实现了

冥界3大法王 发表于 2024-9-26 17:14

lies2014 发表于 2024-9-26 16:16
这个可能只有自己实现了

太好了,那我也就放心了。
总想优化臃肿的代码。
查过帮助,没有该方法。
再把原先的顺一下,就得了。
页: [1]
查看完整版本: 两个StringList能进行比较吗?