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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.12.2013, 13:37   #11
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

А я бы сделал так

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  TS1, TS2: TStringList;
  i: integer;
begin
  if OpenDialog1.Execute then begin
    TS1:= TStringList.Create;
    TS1.LoadFromFile(OpenDialog1.FileName);
    TS2:= TStringList.Create;
    for I := 0  to TS1.Count - 1 do
      if TS2.IndexOf(TS1[i]) = - 1 then
        TS2.Add(TS1[i]);
    TS2.SaveToFile(ExtractFileDir(OpenDialog1.FileName) + '/result.txt'); // сохранение изменений
    ShowMessage('Из файла удалено ' + IntToStr(TS1.Count - TS2.Count) + ' строк.');
    TS1.Free;
    TS2.Free;
  end;
end;
doktor255 вне форума
Старый 27.12.2013, 13:56   #12
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от Fahman Посмотреть сообщение
Вроде работает, а как вывести результат сколько удалено строк?
Забыл. Можно в самом конце (перед end) вывести
Код:
ShowMessage('Удалено '+IntToStr(c)+' строк.');
Цитата:
Сообщение от eval Посмотреть сообщение
alextrof94, вам почитать надобно про TStringList, и в частности про свойство Duplicates, прежде чем писать непойми что
Вот сами и почитайте. И написали бы сами код, используя Duplicates, а не говорили бы как обычно не относящиеся к теме вещи.
alextrof94$gmail.com

Последний раз редактировалось Stilet; 27.12.2013 в 16:38.
alextrof94 вне форума
Старый 27.12.2013, 14:22   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от alextrof94 Посмотреть сообщение
Вот сами и почитайте. И написали бы сами код, используя Duplicates, а не говорили бы как обычно не относящиеся к теме вещи.
alextrof94, чуть выше я написал код, использующий Duplicates.
только есть нюанс - список после обработки будет отсортирован.
Если это не противоречит требованиям TC, то такой способ будет работать намного быстрее, чем полный перебор строк.
Создайте текстовый файлик хотя бы на пару тысяч строк и проверьте работоспособность вашего кода, поймёте, о чём идёт речь...

кроме того, обратите внимание на код от doktor255. Вот именно про этот способ я и говорил, когда писал про использование IndexOf

sapienti sat.
Serge_Bliznykov вне форума
Старый 27.12.2013, 14:45   #14
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

alextrof94 а вы вот понимвете, почему когда отсортирован, то работает быстрее?

а ваще конечно при большом файле да и длинных строках, надо по другому действовать, тут по хэшам наверное надо

Последний раз редактировалось eval; 27.12.2013 в 14:47.
eval вне форума
Старый 27.12.2013, 15:38   #15
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Код:
var 
  MyStringList: TStringList;
  i, j, c: integer;
begin
 FileName:='';
 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;
 end;
end;
Мне этот код больше понравился, намного быстрее удаляет. Только как в конце вывести сколько удалено строк?
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Fahman; 27.12.2013 в 15:50.
Fahman вне форума
Старый 27.12.2013, 15:55   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В стринглисте после LoadFromFile известно сколько строк? Известно.
В нем же перед SaveToFile тоже известно.
А теперь соберите всю волю в кулак и посчитайте со ста попыток - а сколько же удалено строк
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 27.12.2013, 15:57   #17
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

гляжу в книгу вижу фигу?

а зачем вам программирование?
eval вне форума
Старый 27.12.2013, 16:03   #18
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А теперь соберите всю волю в кулак и посчитайте со ста попыток - а сколько же удалено строк
Хорош издеваться над новичками. Хочешь блеснуть интеллектом? Загляни в соседнюю тему где я клею png и реши простую задачку.
doktor255 вне форума
Старый 27.12.2013, 16:20   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я не издеваюсь, а предлагаю кардинальный способ решения проблемы А темы, где собираюсь блеснуть интеллектом или продемонстрировать тупость, выбираю сам, а не по указке умников
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 27.12.2013, 16:25   #20
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

ну так как вывести результат?
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenDialog NitroSki Компоненты Delphi 4 08.06.2011 08:52
OpenDialog Cabyrc БД в Delphi 4 05.04.2009 11:56
opendialog blackstersl Общие вопросы Delphi 4 18.09.2008 15:21
opendialog blackstersl Общие вопросы Delphi 1 11.09.2008 18:23
OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect]; necky Компоненты Delphi 2 11.08.2007 12:53