Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.01.2012, 20:36
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию Задача

1. Есть текст в RichEdit. Необходимо удалить все слова кроме существительных и словосочитаний (с участием хотя бы одного существительного). Потом, в оставшемся тексте из существительных и словосочитаний посчитать количество встречаемости каждого из слов (словосочитаний), учитывая их возможные формы (мн.ч, ед.ч, падежи).

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

2. Необходимо вывести какие-то слова, и рядом еще несколько слов, при нажатии на каждое из которых должно открыться определение этого слова. Какой элемент лучше использовать для реализации такого?

Я делал в StringGrid, но как осуществить нажатие на отдельное слово в ячейке не знаю... И для хранения таких записей что лучше использовать? Текст - несколько связанных ссылок с чем то и этим текстом
Ответить с цитированием
  #2  
Старый 20.01.2012, 21:23
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

В StringGrid-е имеется событие OnSetEditText возникающее при редактировании ячейки и OnMouseDown в котором можно вызвать метод MouseToCell для уточнения ячейки. Выбирай, что больше подходит. Как хранить зависит только от фантазии.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 21.01.2012, 01:22
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

если я правильно понял, это не то... у меня есть одна ячейка, а в ней через запятую, например, перечислены слова. и кликнув на разные слова в одной ячейке произойдут разные события. Но если такое нельзя сделать в стринггриде, то где можно? или каким образо такое сделать
Ответить с цитированием
  #4  
Старый 21.01.2012, 01:28
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

В RichEdit-е.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 21.01.2012, 01:49
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

как? в какую сторону смотреть.

и на счет структуры хранения данных не очень представляю. Получается, будут данные в стринггриде. К примеру одна строка ричедита соответствует строке в стрингриде. Но как связать их между собой? При нажатии слова открывется его определение или синоним, как связать слово с его определением?
То есть, получается слово в стрингриде - слова в ричедите, каждому из которых что-то соответствует... как это хранить.

вообще это все делается, так как дали задание сделать хотя бы подобие автоматизированной системы заполнения тезауруса
Ответить с цитированием
  #6  
Старый 21.01.2012, 02:01
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Смотри OnMouseDown, далее опрделить строку и слово в ней по координатам. К ячейкам StringGrid-а можно "привязать" объект в котором будет хранится определение слова. В качестве объекта может выступать обычная запись (record).
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 23.01.2012, 16:18
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

а как сохранить первое слово в richedit в первую ячейку stringgrid, второе слово во вторую ячейку, третье в третью и тд? как выделить что это первое слово, это второе? есть какая нибудь функция типа как RichEdit.Findtex где в параметрах можно указать слово целиком и тп?
Ответить с цитированием
  #8  
Старый 23.01.2012, 16:34
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

разбивает на слова по пробелам
PHP код:
function Split(sstringcchar ' '): TStringList;
begin
  s 
:= StringReplace(sc#13#10, [rfReplaceAll]);
  
while <> StringReplace(s#13#10#13#10, #13#10, [rfReplaceAll]) do
    
:= StringReplace(s#13#10#13#10, #13#10, [rfReplaceAll]);

  
result := TStringList.Create;
  
result.Text := s;
end 
;
Ответить с цитированием
  #9  
Старый 23.01.2012, 16:43
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

точки, запятые и тп знаки - так же? как обозначается перехдо на новую строку?
Ответить с цитированием
  #10  
Старый 23.01.2012, 17:06
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

PHP код:
function Split(sstringcchar): stringoverload;
begin
  s 
:= StringReplace(sc#13#10, [rfReplaceAll]);
  
while <> StringReplace(s#13#10#13#10, #13#10, [rfReplaceAll]) do
    
:= StringReplace(s#13#10#13#10, #13#10, [rfReplaceAll]);

  
result := s;
end;
function List(
sstring): TStringList;
begin
  result 
:= TStringList.Create;
  
result.Text := s;
end;
function 
Split(sstringshitstring ' ,.'): stringoverload;
var 
iinteger;
begin
  result 
:= s;
  for 
:= 1 to length(shit) do
    
result := Split(resultshit[i]);
end
Ответить с цитированием
  #11  
Старый 23.01.2012, 19:12
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

спасибо, попробую

Последний раз редактировалось ShutTap, 23.01.2012 в 20:16.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter