Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Saskaaaa
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 39
#1

фильтрация и подсчет

28.03.2017, 13:58. Просмотров 820. Ответов 13
Метки нет (Все метки)

В RichEdit загружается txt файл.
нужно:
1) что бы первая кнопка "фильтровала" файл (убирала лишнее) и оставляла только сайты - пример http://2ip.ru/ ;
2) вторая кнопка подсчитывала эти сайты.

Изменения должны быть все в RichEdit.

Помогите пожалуйста, стараюсь сам разобраться, но сроки поджимают.

p.s. форма и текстовый файл в приложении.
0
Вложения
Тип файла: rar делф.rar (178.7 Кб, 1 просмотров)
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2017, 13:58
Ответы с готовыми решениями:

Фильтрация
Знатоки, подскажите, можно ли ADOTable фильтровать несколько раз? Т.е. сделать фильтр, далее по...

Фильтрация БД
Всем доброго время суток! Подскажите пожалуйста.у меня есть БД.мне нужно организовать поиск.А...

Фильтрация по времени
Здравствуйте, у меня есть поля с типом: дата/время, два поля с и по мне необходимо сделать...

Фильтрация БД в dbgrid
Привет всем! Представь себе pagecontrol с 2мя табами, на обоих табах стоит dbgrid к которым...

фильтрация и поиск
нужно чтобы поиск выводил к отображению в дбгрид только записи начинающееся на 21, а не все или...

13
Puporev
Модератор
54350 / 41942 / 28978
Регистрация: 18.05.2008
Сообщений: 98,790
28.03.2017, 15:23 #2
Например так.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var
  Form1: TForm1;
  t:TStringList;
implementation
 
{$R *.dfm}
 
procedure TForm1.N2Click(Sender: TObject);
begin
t:=TStringList.Create;
if dlgOpen1.Execute = True then
t.LoadFromFile(dlgOpen1.FileName);
RichEdit1.Text:=t.Text;
end;
 
procedure TForm1.btn1Click(Sender: TObject);
var i:integer;
    s:string;
begin
for i:=0 to t.Count-1 do
 begin
  s:=t[i];
  delete(s,1,pos('http',s)-1);
  delete(s,pos('- -',s),length(s));
  t[i]:=s;
 end;
RichEdit1.Text:=t.Text;
end;
 
procedure TForm1.btn2Click(Sender: TObject);
begin
ShowMessage('Количество сайтов='+inttostr(t.Count));
t.Free;
end;
1
Saskaaaa
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 39
28.03.2017, 16:09  [ТС] #3
Спасибо!, все работает великолепно.

только я не правильно описал 2-ой пункт.

2) Нужно подсчитать сколько тех или иных сайтов в отдельности, а не общую сумму.
т.е. например yandex - 28
cyberforum - 123
-------
0
Puporev
Модератор
54350 / 41942 / 28978
Регистрация: 18.05.2008
Сообщений: 98,790
28.03.2017, 16:44 #4
Т.е. сайты типа 2ip, img.2ip, www.google-analitics ?
0
Saskaaaa
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 39
28.03.2017, 16:52  [ТС] #5
всё правильно!
0
Puporev
Модератор
54350 / 41942 / 28978
Регистрация: 18.05.2008
Сообщений: 98,790
28.03.2017, 16:57 #6
Извини, пока некогда.
0
Saskaaaa
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 39
28.03.2017, 17:02  [ТС] #7
Спасибо за помощь!
ничего страшного, я подожду.
пока сам попробую разобраться.
0
Puporev
Модератор
54350 / 41942 / 28978
Регистрация: 18.05.2008
Сообщений: 98,790
28.03.2017, 17:48 #8
Почему-то в последней строке, часть ее не удаляется, а переносится на новую строку, почему, пока не знаю.
http://www.3dnews.ru/
1380603972.213 46 10.0.0.0 TCP_MISS/200
0
Saskaaaa
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 39
28.03.2017, 18:10  [ТС] #9
тоже обратил на это внимание.
0
Saskaaaa
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 39
28.03.2017, 18:21  [ТС] #10
txt который я скидывал, только примерный.
основной намного больше, и он "фильтруется" нормально.
фото во вложении скинул.
0
Миниатюры
фильтрация и подсчет  
Puporev
Модератор
54350 / 41942 / 28978
Регистрация: 18.05.2008
Сообщений: 98,790
28.03.2017, 19:06 #11
Ну раз нормально, тогда так.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
procedure TForm1.N2Click(Sender: TObject);
begin
t:=TStringList.Create;
if dlgOpen1.Execute = True then
t.LoadFromFile(dlgOpen1.FileName);
RichEdit1.Text:=t.Text;
end;
 
procedure TForm1.btn1Click(Sender: TObject);
var i:integer;
    s:string;
begin
for i:=0 to t.Count-1 do
 begin
  s:=t.Strings[i];
  delete(s,1,pos('http',s)-1);
  delete(s,pos('- -',s),length(s));
  t[i]:=s;
 end;
RichEdit1.Text:=t.Text;
end;
 
procedure TForm1.btn2Click(Sender: TObject);
type site=record
           naz:string[255];
           kol:integer;
           end;
var a:array of site;
    s,s1:string[255];
    n,i,j:integer;
begin
n:=0;
for i:=0 to t.Count-1 do
 begin
  s:=t[i];
  while s[length(s)]<>'.' do
  delete(s,length(s),1);
  delete(s,length(s),1);
  s1:='';
  j:=length(s);
  while s[j]<>'/' do
   begin
    s1:=s[j]+s1;
    j:=j-1;
   end;
  if i=0 then
   begin
    inc(n);
    setlength(a,n);
    a[n-1].naz:=s1;
    a[n-1].kol:=1;
   end
  else
   begin
    j:=0;
    while (j<n)and(a[j].naz<>s1)do
    inc(j);
    if j<n then inc(a[j].kol)
    else
     begin
      inc(n);
      setlength(a,n);
      a[n-1].naz:=s1;
      a[n-1].kol:=1;
     end;
    end;
 end;
t.Free;
for i:=0 to n-1 do
Memo1.Lines.Add(a[i].naz+'   '+inttostr(a[i].kol));
end;
1
Saskaaaa
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 39
28.03.2017, 19:56  [ТС] #12
Puporev, спасибо большое!
это метод пузырька?

одно не понятно, почему при подсчете удаляется http:// и .ru ?
а так все работает!)
0
Миниатюры
фильтрация и подсчет  
Puporev
Модератор
54350 / 41942 / 28978
Регистрация: 18.05.2008
Сообщений: 98,790
28.03.2017, 20:13 #13
Лучший ответ Сообщение было отмечено Saskaaaa как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
procedure TForm1.btn2Click(Sender: TObject);
type site=record
           pol_naz:string[255];
           kor_naz:string[255];
           kol:integer;
           end;
var a:array of site;
    s,s1:string[255];
    n,i,j:integer;
begin
n:=0;
for i:=0 to t.Count-1 do
 begin
  s:=t[i];
  while s[length(s)]<>'.' do
  delete(s,length(s),1);
  delete(s,length(s),1);
  s1:='';
  j:=length(s);
  while s[j]<>'/' do
   begin
    s1:=s[j]+s1;
    j:=j-1;
   end;
  if i=0 then
   begin
    inc(n);
    setlength(a,n);
    a[n-1].pol_naz:=t[i];
    a[n-1].kor_naz:=s1;
    a[n-1].kol:=1;
   end
  else
   begin
    j:=0;
    while (j<n)and(a[j].kor_naz<>s1)do
    inc(j);
    if j<n then inc(a[j].kol)
    else
     begin
      inc(n);
      setlength(a,n);
      a[n-1].pol_naz:=t[i];
      a[n-1].kor_naz:=s1;
      a[n-1].kol:=1;
     end;
    end;
 end;
t.Free;
for i:=0 to n-1 do
Memo1.Lines.Add(a[i].pol_naz+'   '+inttostr(a[i].kol));
end;
1
Saskaaaa
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 39
28.03.2017, 20:21  [ТС] #14
Puporev, Вы лучший, Спасибо!
0
28.03.2017, 20:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2017, 20:21

Фильтрация трафика
Доброго времени всем! Есть программа, она обменивается пакетами с сервером. Скажите пожалуйста,...

Фильтрация данных
Доброй ночи, подскажите как это можно реализовать с помощью одной кнопки(button) &quot;выбрать txt...

Фильтрация в ListView
Здравствуйте! покажите пожалуйста, как сделать фильтрацию в ListView? допустим вводим в Edit1.Text...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru