Главная страница
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-1192455837
фыва
2007-10-15 17:43
2007.11.11
Вставка в мемо


11-1175523578
Fregl
2007-04-02 18:19
2007.11.11
Поддержка MySQL


15-1191996238
shlst
2007-10-10 10:03
2007.11.11
Откуда Вы узнали о катастрофе? :)


2-1192799860
Friz
2007-10-19 17:17
2007.11.11
ShellExecute


11-1176144283
Dy1
2007-04-09 22:44
2007.11.11
как работать с ImageList (и ListView)?