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

Вниз

доработка в программе   Найти похожие ветки 

 
flunkkkk ©   (2008-12-21 15:12) [0]

программа открывает .txt файл, вывожу файл в мемо1 программа анализирует текст и в мемо2 указывает сколько раз каждое слово употребляется в тексте!
хочу создать еще кнопку чтобы в мемо2 программа упорядочила мне слова по  частоте употребления в тексте. А она мне просто показывает по порядку каждое слово сколько раз встречается!
вот мне подсказали ето:
TStringList(Memo2.Lines).Sort;
Memo2.Update;
Но чтото оно не работает! подскажите где ошибка???


 
Leonid Troyanovsky ©   (2008-12-21 15:18) [1]


> flunkkkk ©   (21.12.08 15:12)  

> вот мне подсказали ето:
> TStringList(Memo2.Lines).Sort;

Небось, двоешники посоветовали?
Выводи не в мемо2, а, скажем, TListBox со стилем OwnerDraw.
А уж показывать будет оный тот StringList, в который слова сложишь.

--
Regards, LVT.


 
{RASkov} ©   (2008-12-21 15:19) [2]

> [0] flunkkkk ©   (21.12.08 15:12)

Ты решил, что двумя строчками кода написал всю программу? :)
Я начал было в этом посте рассказывать как тебе поступить, но оказалось, что тут много нужно тебе рассказывать.... стре все нафик.
Давай спрашивай конкретно, что тебе не ясно.
Покажи код, где ты подсчитываешь кол-во уникальных(?) слов в тексте.
Подсказка: тут рядом ветка, там есть решение по нахождению общего кол-ва слов в тексте, может пригодится чем нибудь...


 
{RASkov} ©   (2008-12-21 15:21) [3]

> [1] Leonid Troyanovsky ©   (21.12.08 15:18)
> Небось, двоешники посоветовали?

:)
Да нет, посоветовал это Сергей М.) Но этот совет, т.н. подсказка, был на вопрос автора об сортировке, а никак не о подсчете)


 
Leonid Troyanovsky ©   (2008-12-21 15:24) [4]


> {RASkov} ©   (21.12.08 15:19) [2]

>  стре все нафик.

Это как?

--
Regards, LVT.


 
flunkkkk ©   (2008-12-21 15:24) [5]

var
 StringCount: Word;
 sl: TStringList;
 l: TList;
 i, j: integer;
 s, tmp: string;
 r: PRec;
 f: boolean;
 begin
  StringCount := 0;
  sl := TStringList.Create;

  // Выделяем из текста все слова
  for i := 0 to Memo1.Lines.Count-1 do
  begin
     s := Memo1.Lines[i];
     while Length( s ) > 0 do
     begin
        if Pos( " ", s ) > 0 then
        begin
           tmp := Copy( s, 1, Pos( " ", s )-1 );
           Delete( s, 1, Pos( " ", s ) );
           tmp := TrimEx( tmp );
        end
        else
        begin
           tmp := s;
           s := "";
           tmp := TrimEx( tmp );
        end;
        if Trim( tmp ) <> "" then
           sl.Add( tmp );
     end;
  end;

  StringCount := sl.Count;

  // Производим подсчет
  l := TList.Create;
  for i := 0 to sl.Count-1 do
  begin
     if l.Count = 0 then
     begin
        New( r );
        r^.str := sl[i];
        r^.col := 1;
        l.Add( r );
     end
     else
     begin
        f := false;
        for j := 0 to l.Count-1 do
        begin
           r := l[j];
           if r^.str = sl[i] then
           begin
              r^.col := r^.col + 1;
              l[j] := r;
              f := true;
              Break;
           end;
        end;
        if not f then
        begin
           New( r );
           r^.str := sl[i];
           r^.col := 1;
           l.Add( r );
        end;
     end;
  end;

  // Выводим результат
  for i := 0 to l.Count-1 do
  begin
     r := l[i];
     Memo2.Lines.Add( r^.str + " - " + IntToStr( r^.col ) + " (" + Format( "%.2f%%", [r^.col/StringCount*100] ) + ")" );
   

  end;

  l.Free;
  sl.Free;


 
{RASkov} ©   (2008-12-21 15:25) [6]

> [4] Leonid Troyanovsky ©   (21.12.08 15:24)

стёр :)


 
flunkkkk ©   (2008-12-21 15:25) [7]

"Да нет, посоветовал это Сергей М.) Но этот совет, т.н. подсказка, был на вопрос автора об сортировке, а никак не о подсчете)"
подсчет мне не надо! у меня выводит подсчитаные слова, мне только надо их отсортировать


 
Leonid Troyanovsky ©   (2008-12-21 15:26) [8]


> {RASkov} ©   (21.12.08 15:21) [3]

> > Небось, двоешники посоветовали?

> Да нет, посоветовал это Сергей М.)

Я пропустил, дай ссыл, плиз.

--
Regards, LVT.


 
{RASkov} ©   (2008-12-21 15:28) [9]

> [5] flunkkkk ©   (21.12.08 15:24)

Ё-мое.... нафик тут указатели, нафик TList непосредственно???
У Мемо есть свойство Текст, где и есть весь текст - в нем и считай сколько слов....
Что такое PRec?....
В общем слишком все сложно, для простой задачи...


 
{RASkov} ©   (2008-12-21 15:30) [10]

> [8] Leonid Troyanovsky ©   (21.12.08 15:26)

http://delphimaster.net/view/1-1229791957/


 
Leonid Troyanovsky ©   (2008-12-21 15:33) [11]


> {RASkov} ©   (21.12.08 15:30) [10]

Спасибо. Жалко, что закрыли.
Мне есть что им сказать [ДВ] :)

--
Regards, LVT.


 
{RASkov} ©   (2008-12-21 15:34) [12]

Достаточно 1 Мемо и 1 Листбокс...
В мемо текст, а в ЛистБоксе Слова с их кол-вом...
Листбокса достаточно - Strings - Сами слова Objects - Кол-во данного слова...
Сортировать можно как по словам, так и по кол-ву....
Но можно и табличный компонент какой-нибудь использовать... но, имхо, достаточно ЛистБокса...


 
flunkkkk ©   (2008-12-21 15:37) [13]

мне это не очень дошло, вот я и пишу в форум начинающим. ..
можно поподробнее с листбоксом?


 
Leonid Troyanovsky ©   (2008-12-21 15:40) [14]


> {RASkov} ©   (21.12.08 15:34) [12]

> Сортировать можно как по словам, так и по кол-ву....
> Но можно и табличный компонент какой-нибудь использовать.
> .. но, имхо, достаточно ЛистБокса...

Для сортировать - достаточно TStringList.
А показывать - любой контрол с virtual, в т.ч. и ЛистБокс.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-12-21 15:49) [15]


> flunkkkk ©   (21.12.08 15:37) [13]

> можно поподробнее с листбоксом?

Можешь взглянуть на пример с TStringGrid
http://groups.google.com/group/fido7.ru.delphi/msg/8c27f707490716b2

Это как идея. Просто тогда стиль, скажем, lbVirtual
не был широко распространен.

--
Regards, LVT.


 
{RASkov} ©   (2008-12-22 01:24) [16]

> [5] flunkkkk ©   (21.12.08 15:24)

http://forum.ishodniki.ru/index.php?topic=15424.0

> подсчет мне не надо! у меня выводит подсчитаные слова, мне только надо их отсортировать

Ну ну :) ...у тебя)

Сортировать в Мемо2 хочешь? Надеюсь тебе по кол-ву не нужно сортировку, ибо после
Memo2.Lines.Add( r^.str + " - " + IntToStr( r^.col ) + " (" + Format( "%.2f%%", [r^.col/StringCount*100] ) + ")" );
уже не будет такой возможности. Только заново наполнять текст Мемо2 но перед этим сортировать по кол-ву нужно L, а он у тебя был локальным и уничтожен...
Так что, ...копи-пасты тебя отчислят с учебы.... немного сам соображай что делаешь.... Мы поможем, не волнуйся, но все делать за тебя - это не верно.
Вот подсказка:
Тип
TRec = record
 str: String;
 col: Integer;
end;
PRec = ^TRec;
прекрасно заменится TStringList"ом... А уже его данные отоброжать в виртуальном ЛистБоксе...
Так же подсчет можно вести уже при Екстракте слов... ни к чему кучу циклов делать...


 
Германн ©   (2008-12-22 01:31) [17]


> Так что, ...копи-пасты тебя отчислят с учебы.... немного
> сам соображай что делаешь.... Мы поможем, не волнуйся

Ага. Поможем с превеликим удовольствием. Когда демобилизуешься. Если тогда ещё захочешь продолжать заниматься программированием. :)


 
flunkkkk ©   (2008-12-22 10:24) [18]

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


 
Сергей М. ©   (2008-12-22 10:30) [19]


> flunkkkk


var
 sl: TStringList;
..
 sl := TStringList.Create;
 try
   sl.Assign(Memo.Lines);
   sl.Sort;
   Memo.Lines := sl;
 finally
   sl.Free;
 end;


 
{RASkov} ©   (2008-12-22 10:35) [20]

> [18] flunkkkk ©   (22.12.08 10:24)

Ну и писАл бы чего-нибудь попроще.... а зачем для непрограммера такие "сложности"???

> просто после 6 лекций препод сказал что мы сможем написать что угодно  в делфи . .

В чем-то препод и прав. Я вот вообще ни на одной лекции не был...

С другой стороны, ты что тут хочешь, что бы твой курсач за тебя сделали?
Вот ты нашел код "выдирания" слов из текста... даже с их подсчетом, да еще и с процентным соотношением - повезло?)
А вот сортировку в том коде не предусмотрели :( Тут нужно переписывать.... А ты даже после 6 или сколько там лекций, нифика не можешь даже готовое переделать для себя) Я могу тебе написать CustomSort для StringList"а, но что тебе это даст? Тыж не сможешь его прикрутить куда нужно, тогда зачем тебе это писать?


 
{RASkov} ©   (2008-12-22 10:37) [21]

> [19] Сергей М. ©   (22.12.08 10:30)

Его условия:

> чтобы в мемо2 программа упорядочила мне слова по  частоте употребления в тексте.

А в "его" Мемо2 такого не сделать)



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

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

Наверх




Память: 0.53 MB
Время: 0.016 c
2-1229548091
YoungerDelphist
2008-12-18 00:08
2009.02.01
biHelp


2-1229482630
Genfyy
2008-12-17 05:57
2009.02.01
База данных


2-1229694301
Дмитрий
2008-12-19 16:45
2009.02.01
Передать события в качестве параметров


2-1229785639
neveGreen
2008-12-20 18:07
2009.02.01
совместимость версий Делфи


2-1229432916
девушка
2008-12-16 16:08
2009.02.01
DevExpress properties