吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 626|回复: 9
收起左侧

[已解决] 两个StringList能进行比较吗?

[复制链接]
冥界3大法王 发表于 2024-9-26 14:04
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
Nettos 发表于 2024-9-26 15:16
我有个想法,你觉得转MD5来比较咋样,如果担心MD5冲突,转哈希来比较值

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
黄色土豆 + 1 + 1 我很赞同!

查看全部评分

lovemit 发表于 2024-9-26 15:39
for循环。
lies2014 发表于 2024-9-26 15:56
StringList1, StringList2 定义为 TStrings 就可以了

[Delphi] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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 就可以了

[mw_shl_code=delphi,true]unit Unit11;

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

这个可能只有自己实现了

免费评分

参与人数 1吾爱币 +3 收起 理由
冥界3大法王 + 3 谢谢@Thanks!

查看全部评分

 楼主| 冥界3大法王 发表于 2024-9-26 17:14
lies2014 发表于 2024-9-26 16:16
这个可能只有自己实现了

太好了,那我也就放心了。
总想优化臃肿的代码。
查过帮助,没有该方法。
再把原先的顺一下,就得了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-3-5 14:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表