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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2016, 01:42   #11
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,886
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
нет

я имел в виду удаление из копии данных (скопировать список и удалять строки из копии уже).
Посмотрим, что автор скажет по поводу модификации входных данных.

А вообще, мне всё равно. Я всего лишь предложил альтернативный вариант.
В списках работают со ссылками/указателями. Выбирай родной тебе термин. Добавление в список TStringList - есть добавление в список указателя на строку. Плюс увеличение счётчика ссылок, который принадлежит самой строке - string). Удаление строки - есть удаление ссылки из списка плюс проверка счётчика ссылок.
northener на форуме Ответить с цитированием
Старый 21.03.2016, 08:29   #12
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Работа с указателями происходит только внутри списка.
При копировании данных наружу копируются именно данные, а не указатели.
Код:
List1.Text:= List2.Text;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.03.2016, 09:45   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Имел ввиду такое
Код:
  for idx2:=0 to SL2.Count-1 do
    if SL1.IndexOf(SL2[idx2])=-1 then SL3.Add(SL2[idx2]);
И на 4000 строк в SL2, 2000 в SL1 и примерно половина не совпадает этот код быстрей чем удаление
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.03.2016, 09:53   #14
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
быстрей чем удаление
а код где?
Хотя, хренсним, пусть так и будет.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.03.2016, 10:05   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код c удалением в #5. Код с добавлением в 3-ий стринглист в #13. Скорее всего из-за вложенного цикла. И сильно будет зависеть от конкретного состава строк
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.03.2016, 10:14   #16
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Код c удалением в #5. Код с добавлением в 3-ий стринглист в #13.
Да не.
Код программы с измерением времени обоих алгоритмов где?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.03.2016, 10:16   #17
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
const cSimbols = 'abcdefghijklmnopqrstu1234567890';
var SL1,SL2,SL3: TStringList;
    idx1,idx2: Integer;
    s: String;
    Start: Cardinal;
function RandomStr: String;
var j,k: Integer;
begin
  k:=5+Random(30);
  Result:='';
  for j:=1 to k do Result:=Result+cSimbols[Random(Length(cSimbols))+1];
end;
begin
  Randomize;
  SL1:=TStringList.Create;
  SL2:=TStringList.Create;
  for idx1:=1 to 2000 do begin
    s:=RandomStr;
    SL1.Add(s);
    SL2.Add(s);
    SL2.Add(RandomStr);
  end;

  Start:=GetTickCount;
  SL3:=TStringList.Create;
  for idx2:=0 to SL2.Count-1 do
    if SL1.IndexOf(SL2[idx2])=-1 then SL3.Add(SL2[idx2]);
  Edit1.Text:=IntToStr(GetTickCount-Start);

  Start:=GetTickCount;
  for idx1:=0 to SL1.Count-1 do
    repeat
      idx2:=SL2.IndexOf(SL1[idx1]);
      if idx2<>-1 then SL2.Delete(idx2);
    until idx2<0;
  Edit2.Text:=IntToStr(GetTickCount-Start);

  SL1.Free;
  SL2.Free;
  SL3.Free;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.03.2016, 10:24   #18
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Ну дай проект целиком-то, ёмаё.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.03.2016, 10:34   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Д7 устроит? Чего есть на данный момент. И не 7z
Вложения
Тип файла: zip Новая папка (15).zip (8.8 Кб, 11 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.03.2016, 10:41   #20
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Ща глянем...
7z-то тут причём?
Я открою любой формат.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 21.03.2016 в 10:43.
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнить два списка DozEL Microsoft Office Excel 3 27.04.2015 13:14
Как сравнить два string? demigod82 Общие вопросы C/C++ 3 08.05.2012 23:07
Сравнить два файла demiancz Общие вопросы Delphi 22 16.02.2011 15:29
Сравнить два множества. Pascal MaxMelnikov Помощь студентам 3 16.03.2009 09:35
Сравнить два файла Aleksandr Microsoft Office Excel 6 07.10.2008 00:22