Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.02.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.008 c
15-1228831528
Вова
2008-12-09 17:05
2009.02.01
запрос


15-1228556634
vrem
2008-12-06 12:43
2009.02.01
Новая опера 10 - быстрее на 30 %


2-1229664044
nomad000
2008-12-19 08:20
2009.02.01
Компонент TMenu


2-1229535561
smartleds
2008-12-17 20:39
2009.02.01
Ошибка при сохранении файла


2-1229722211
otecmaldun
2008-12-20 00:30
2009.02.01
Что надо добавить.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский