@hermina.hauck
Для того, чтобы собрать уникальные строки из двух файлов в Delphi, можно использовать следующий алгоритм:
- Создайте два объекта TStrings для хранения строк из каждого файла:
1
2
3
4
5
|
var
file1Strings, file2Strings: TStrings;
begin
file1Strings := TStringList.Create;
file2Strings := TStringList.Create;
|
- Загрузите строки из каждого файла в соответствующий объект TStrings:
1
2
|
file1Strings.LoadFromFile('file1.txt');
file2Strings.LoadFromFile('file2.txt');
|
- Создайте третий объект TStrings, который будет содержать уникальные строки из двух файлов:
1
2
3
4
|
var
uniqueStrings: TStrings;
begin
uniqueStrings := TStringList.Create;
|
- Обойдите каждую строку из первого объекта TStrings и проверьте, есть ли она во втором объекте TStrings:
1
2
3
4
5
6
7
8
9
10
|
var
i: Integer;
begin
for i := 0 to file1Strings.Count - 1 do
begin
if file2Strings.IndexOf(file1Strings[i]) = -1 then
begin
uniqueStrings.Add(file1Strings[i]);
end;
end;
|
- Обойдите каждую строку из второго объекта TStrings и проверьте, есть ли она в первом объекте TStrings:
1
2
3
4
5
6
7
|
for i := 0 to file2Strings.Count - 1 do
begin
if file1Strings.IndexOf(file2Strings[i]) = -1 then
begin
uniqueStrings.Add(file2Strings[i]);
end;
end;
|
- Сохраните уникальные строки в новый файл:
1
|
uniqueStrings.SaveToFile('unique.txt');
|
- Не забудьте освободить память, занятую объектами TStrings:
1
2
3
|
file1Strings.Free;
file2Strings.Free;
uniqueStrings.Free;
|
Полный код будет выглядеть примерно так:
1
2
3
4
5
6
7
8
9
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
|
var
file1Strings, file2Strings, uniqueStrings: TStrings;
i: Integer;
begin
file1Strings := TStringList.Create;
file2Strings := TStringList.Create;
uniqueStrings := TStringList.Create;
try
file1Strings.LoadFromFile('file1.txt');
file2Strings.LoadFromFile('file2.txt');
for i := 0 to file1Strings.Count - 1 do
begin
if file2Strings.IndexOf(file1Strings[i]) = -1 then
begin
uniqueStrings.Add(file1Strings[i]);
end;
end;
for i := 0 to file2Strings.Count - 1 do
begin
if file1Strings.IndexOf(file2Strings[i]) = -1 then
begin
uniqueStrings.Add(file2Strings[i]);
end;
end;
uniqueStrings.SaveToFile('unique.txt');
finally
file1Strings.Free;
file2Strings.Free;
uniqueStrings.Free;
end;
end;
|