Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

усовершенствование цикла   Найти похожие ветки 

 
zorik   (2007-10-15 16:10) [40]


> Dennis I. Komarov ©

?


 
koha   (2007-10-15 22:33) [41]

- интересно, а такой алгоритм сколько работать будет?

var
 Form1: TForm1;
 LFull,LShort,LSource: TStrings;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i,N,T: integer;
begin

 //...........
 //загружаем LSource
 //......
 //представим, что уже загрузили LSource каким-нибудь способом

 N:=14;
 for i := 0 to LSource.Count - 1 do begin
   T:=LShort.IndexOf(LSource.Strings[i][n]);
   if T = -1 then begin
     LFull.Add(LSource.Strings[i]);
     LShort.Add(LSource.Strings[i][n]);
   end
   else begin
     LFull.Delete(i);
     LShort.Delete(i);
   end;
 end;
 //..................

end;


 
koha   (2007-10-15 22:58) [42]

- Сорри кучу ошибок исправил, ну вобщем работающий пример, но далек от совершенства.

var
 Form1: TForm1;
 LFull,LShort,LSource: TStrings;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i,N,T: integer;
   St: String;
begin
 st:="          "; // 10 цифр
 LFull   := TStringList.Create;
 LShort  := TStringList.Create;
 LSource := TStringList.Create;
 try
 LSource.LoadFromFile("c:\Archive\test.txt");
 //...........
 //загружаем LSource
 //......
 //представим, что уже загрузили LSource каким-нибудь способом

 N:=14;
 for i := 0 to LSource.Count - 1 do begin
   Move(LSource.Strings[i][N],ST[1],10);
   memo1.Lines.Add(st);
   T:=LShort.IndexOf(St);
   if T = -1 then begin
     LFull.Add(LSource.Strings[i]);
     LShort.Add(ST);
   end
   else begin
     LFull.Delete(i-1);
     LShort.Delete(i-1);
   end;
 end;
 //..................

 memo1.Text:=LFull.Text;

 finally
   LFull.Free;
   LShort.Free;
   LSource.Free;
 end;

end;


 
koha   (2007-10-15 23:29) [43]

- создал этих Пупкиных 1460160 одинаковых сторок и в разных местах 4 строки изменил
время ушло на загрузку и сортировку всего ~ 1.5 секунды (грубый подсчет), Процессор: Core 2 Duo T5600 (1,83 Mг).

необходимо исправить строки:
    LFull.Delete(i-1);
    LShort.Delete(i-1);
на:  
    LFull.Delete(T);
    LShort.Delete(T);



Страницы: 1 2 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.022 c
2-1192729888
Jimmy
2007-10-18 21:51
2007.11.11
Сколько памяти занимает программа


4-1178388982
buben
2007-05-05 22:16
2007.11.11
Application.Handle


2-1192561443
smartleds
2007-10-16 23:04
2007.11.11
Коллеги, подскажите как найти максимальный номер элемента


15-1191917559
БарЛог
2007-10-09 12:12
2007.11.11
Direct Connect - сервер


1-1187796570
Дмитрий Белькевич
2007-08-22 19:29
2007.11.11
Полупрозрачность tpngimage на прозрачной форме.