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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2011, 14:22   #11
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

а, понял у меня она по другому работала. отсеивала из одного списка повторы а у тебя из 2-х общие повторы
onewho вне форума Ответить с цитированием
Старый 25.02.2011, 16:58   #12
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
По умолчанию

Код:
//T1:старая база
//T2:новая база
//T3:результат обработки

procedure TForm1.Button3Click(Sender: TObject);
begin
  Memo1.Text:='';
  T1.Sort;
  T2.Sort;
  for i:=0 to T2.Count-1 do
    begin
    b:=false;
    for k:=0 to T1.Count-1 do
      begin
      if T1.Strings[k]=T2.Strings[i] then b:=true;
      end;
    if b=false then T3.Append(T2.Strings[i]);
    end;
  Memo1.Text:=T3.Text;
end;
Все равно зависает =(
Federal вне форума Ответить с цитированием
Старый 25.02.2011, 19:38   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Federal, Вы издеваетесь?!
1) ну и где здесь поиск в отсортированном массиве?!
Перебираете все записи?!
В моём примере метод FIND не заметили?!

2) а для чего в таком случае Вы сортируете, причём ОБЕ коллекции?!

p.s. я Вам больше скажу, то, что я написал в моём прошлом сообщении — это уже ПОЛНОСТЬЮ готовый код!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.02.2011, 00:41   #14
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Federal, Вы издеваетесь?!
1) ну и где здесь поиск в отсортированном массиве?!
Перебираете все записи?!
В моём примере метод FIND не заметили?!

2) а для чего в таком случае Вы сортируете, причём ОБЕ коллекции?!

p.s. я Вам больше скажу, то, что я написал в моём прошлом сообщении — это уже ПОЛНОСТЬЮ готовый код!
Но я не понимаю чему равен index
Код:
 
if Not TS1.Find(TS2.Strings[i], Index)  then TS3.Append(TS2.Strings[i]);
P.S. я нуб, я смирился с этим :D
Federal вне форума Ответить с цитированием
Старый 26.02.2011, 12:05   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Но я не понимаю чему равен index
Код:
if Not TS1.Find(TS2.Strings[i], Index)  then TS3.Append(TS2.Strings[i]
);
В данном случае Index будет равено -1 (т.к. ничего не нашлось)
Но это НЕ ВАЖНО!
Достаточно описать переменную Index типа Integer и всё.
Код:
var
  Index : integer;
(не нравится имя Index - возьмите любое другое!
например, IResultOfFind
Код:
var  IResultOfFind : integer;
....
begin
....
   if Not TS1.Find(TS2.Strings[i], IResultOfFind)  then TS3.Append(TS2.Strings[i]);
p.s. а смиряться с тем, что что-то не знаешь - не обязательно. Есть справка (help) в самом Delphi. Есть куча учебной литературы (в том числе и на русском языке). Есть Интернет.
Достаточно было Вам пробить TStringList метод Find как Вы бы легко поняли, что это за второй параметер в методе и для чего он нужен!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.02.2011, 00:32   #16
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  T1,T2,T3:TStringList;

implementation

{$R *.dfm}
var
i,index:integer;


procedure TForm1.Button1Click(Sender: TObject);
begin
T1.Text:=Memo1.Text;
Memo1.Text:='';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
T1:= TStringList.Create;
T2:= TStringList.Create;
T3:= TStringList.Create;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
T2.Text:=Memo1.Text;
Memo1.Text:='';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Memo1.Text:='';
  T2.Sort;
  for i:=0 to T2.Count-1 do
    if Not T1.Find(T2.Strings[i], index)  then T3.Append(T2.Strings[i]);
  Memo1.Text:=T3.Text;
end;

end.
обработал 250000 старых и 500000 новых ровно за 4 секунды
Спасибо!!!
Federal вне форума Ответить с цитированием
Старый 27.02.2011, 02:37   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
обработал 250000 старых и 500000 новых ровно за 4 секунды
Спасибо!!!

ну вот и славно! поздравляю!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удалить повторы FAiver Общие вопросы Delphi 5 21.10.2010 20:45
Повторы в ListView Shouldercannon Общие вопросы Delphi 2 21.10.2010 13:52
Как в удалить кучу строк, через одну? levohotnik Microsoft Office Excel 6 09.09.2010 21:08
повторы в Random Natok Помощь студентам 4 26.05.2009 17:41
Убрать повторы ShnapS БД в Delphi 4 15.05.2009 23:03