Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2014, 14:05   #1
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию Оптимизация кода: Удаление Дубликатов

Код:
var
MyStringList: TStringList;
i, j, c: integer;
begin
c:=0;
OpenDialog1.execute;
if OpenDialog1.filename<>'' then
begin
MyStringList:=TStringList.Create;
MyStringList.LoadFromFile(OpenDialog1.filename);
for i:=MyStringList.Count-1 downto 0 do
for j:=MyStringList.Count-1 downto i+1 do
if MyStringList[i]=MyStringList[j] then
begin
MyStringList.delete(j);
inc(c);
end;
MyStringList.SaveToFile(OpenDialog1.filename);
MyStringList.Free;
ShowMessage ('Удалено: '+IntToStr(c));
end;
end;
Хотелось бы немного оптимизировать данный код, чтобы быстрее удалял дубликаты для работы с большими файлами.
UKRtortik вне форума Ответить с цитированием
Старый 01.03.2014, 14:19   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
var
  ts: tstringlist;
begin
  ts := tstringlist.Create;
  ts.Sorted := true;
  ts.Duplicates := dupIgnore;
  ts.LoadFromFile('1.txt');
  ts.SaveToFile('1.txt');
  ts.Free;
end;
Порядок строк изменится.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 01.03.2014, 14:23   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А сортировку результирующего файла изменить можно? Если можно, то
Код:
  MyStringList:=TStringList.Create;
  MyStringList.Sorted:=True;
  MyStringList.Duplicates:=dupIgnore;
  MyStringList.LoadFromFile(OpenDialog1.filename);
  MyStringList.SaveToFile(OpenDialog1.filename);
  MyStringList.Free;
Цитата:
BDA
Хоть переменные разные
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.03.2014, 14:32   #4
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А сортировку результирующего файла изменить можно? Если можно, то
Код:
  MyStringList:=TStringList.Create;
  MyStringList.Sorted:=True;
  MyStringList.Duplicates:=dupIgnore;
  MyStringList.LoadFromFile(OpenDialog1.filename);
  MyStringList.SaveToFile(OpenDialog1.filename);
  MyStringList.Free;
Хоть переменные разные
А как вывести кол-во удаленных дубликатов?
UKRtortik вне форума Ответить с цитированием
Старый 01.03.2014, 14:40   #5
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
var
  ts: tstringlist;
c:integer;
begin
  ts := tstringlist.Create;
  ts.Sorted := true;
  c:=ts.count;
  ts.Duplicates := dupIgnore;
  ts.LoadFromFile('1.txt');
  ts.SaveToFile('1.txt');
c:=c-ts.count;
  ts.Free;
showmessage('dups:'+inttostr(c));
end;
Кольша вне форума Ответить с цитированием
Старый 01.03.2014, 14:55   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от UKRtortik Посмотреть сообщение
А как вывести кол-во удаленных дубликатов?
Данным кодом никак
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.03.2014, 14:59   #7
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
Код:
var
  ts: tstringlist;
c:integer;
begin
  ts := tstringlist.Create;
  ts.Sorted := true;
  c:=ts.count;
  ts.Duplicates := dupIgnore;
  ts.LoadFromFile('1.txt');
  ts.SaveToFile('1.txt');
c:=c-ts.count;
  ts.Free;
showmessage('dups:'+inttostr(c));
end;
тАк выводит кол-во оставшихся строк в файле
UKRtortik вне форума Ответить с цитированием
Старый 01.03.2014, 15:16   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
var
  ts: tstringlist;
  a: integer;
begin
  ts := tstringlist.Create;
  ts.LoadFromFile('1.txt');
  a := ts.Count;
  ts.Sorted := true;
  ts.Duplicates := dupIgnore;
  ts.Text := ts.Text;
  ts.SaveToFile('1.txt');
  showmessage(IntToStr(a - ts.Count));
  ts.Free;
end;
Аватар, ага, коды "кардинально" различаются
Цитата:
Как называют переменные программисты:
Новичок: f: boolean;
Любитель: flag: boolean;
Любитель, мнящий себя профессионалом: EndFileFlag: boolean;
Профессионал: f: boolean;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 01.03.2014 в 15:20.
BDA на форуме Ответить с цитированием
Старый 01.03.2014, 15:21   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Кольша кол-во отрицательное
eval вне форума Ответить с цитированием
Старый 01.03.2014, 15:22   #10
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
var
  ts: tstringlist;
  a: integer;
begin
  ts := tstringlist.Create;
  ts.LoadFromFile('1.txt');
  a := ts.Count;
  ts.Sorted := true;
  ts.Duplicates := dupIgnore;
  ts.Text := ts.Text;
  ts.SaveToFile('1.txt');
  showmessage(IntToStr(a - ts.Count));
  ts.Free;
end;
Аватар, ага, коды "кардинально" различаются
Спасибо! То что нужно!
UKRtortik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление дубликатов с ListBox celovec Общие вопросы Delphi 7 13.09.2016 09:07
Удаление дубликатов Wind-up Bird Microsoft Office Excel 9 02.02.2012 12:49
Удаление дубликатов строк hon Паскаль, Turbo Pascal, PascalABC.NET 10 02.08.2011 05:29
удаление дубликатов в ListView fate Общие вопросы Delphi 8 12.05.2011 16:51
Удаление дубликатов Deltist Microsoft Office Excel 11 14.01.2011 16:01