Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2010, 08:11   #1
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
Вопрос Как получить слово вокруг сепаратора

Здравствуйте!
Написал простой код, который удаляет некоторые символы из текста(сепараторы), но теперь не знаю как создать по крайней мере список-отчет о произведенных удалениях, для выполнения контроля человеком.
Также не знаю как осуществить возврат исходного словосочетания, если контролер усмотрит что удаление было не нужно.

Пример: за-ключается, меж- ду, получает- ся.
В после обработки будет: заключается, между, получается.
Нужно создавать список слов после обработки.

Подготовка текста.
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 19.10.2010, 08:17   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Храни первоначальный вариант
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 19.10.2010, 08:38   #3
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

Боюсь для этого придется выйти на другой уровень, там где слово=объект, а у меня совсем простой код, когда находит в строке сепаратор, просто удаляет его:
Код:
 while i<=length(s) do
      begin
 if s[i] in Sep then delete(s,i,1)
 else inc(i);
     end;
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 19.10.2010, 08:49   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Тогда сохраняй, что ты и где откидываешь. Типа Undo. Пары символ-координаты (или смещение от начала), только помни, что строка скорее всего будет меньше, то есть чтобы вернуть потерянный символ, тебе нужно будет от конца пересчитывать координаты.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.10.2010, 02:55   #5
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

Вопрос актуален. У меня нету ни малейшего представления в каком направлении двигатся, чтобы получать слова.

У кого-то здесь наверняка есть какие-то наработки по подготовке текста, обработке строк, поделитесь исходничками
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 21.10.2010, 07:03   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Просто веди лог изменений и все. Учитывай только что общая длина текста будет уменьшаться на неизвестное тебе количество символов.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.10.2010, 07:43   #7
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Просто веди лог изменений и все. Учитывай только что общая длина текста будет уменьшаться на неизвестное тебе количество символов.
Несколько поясню. Оператор не сможет просматривать весь текст полностью(большие тексты, слишком дорого), ему бы списочек замен просмотреть, а в идеале установить максимальную длинну получаемого после вырезки сепаратора слова и если длинна больше, то возвращать автоматом.
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 21.10.2010, 08:17   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Зачем это? Для чего просматривать замены? Я к тому, что возможно получиться решить задачу другим способом. Например, устранив сами причины возникновения задачи.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.10.2010, 14:42   #9
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Цитата:
Сообщение от HellMercenariess Посмотреть сообщение
Пример: за-ключается, меж- ду, получает- ся.
В после обработки будет: заключается, между, получается.
Нужно создавать список слов после обработки.
[/COLOR]
Если из вашего примера удалять сепараторы (вашем же кодом) то в итоге вы получите не "между" а "меж ду". У меня такой вопрос. В вашем тексте, который вы обрабатываете, между сепаратором и соседними с ним буквами может быть пробел или нет? А также вопрос, какова длина текста (максимальная)? Известно ли какими символоми разделены слова в тексте или же это обычный текст, слова в котором могут разделятся любыми символами (например , . ; и т. д.)?

А вообще, при условии, что слова состоят из русских букв, могут разделяться символами '-',',','.' и т.д. но только не сепаратором, могу предложить такой код для получения отдельных слов текста:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  ST, S: string;
  i    : integer;
begin
  i:=0;
  ST:=Edit1.Text;  //строка текста
  S:='';  //здесь будем хранить отдельное слово
  while i < Length(ST) do
    begin
      Inc(i);
      if ST[i] in ['А'..'п','р'..'я','-'] then S:=S + ST[i];
      if not (ST[i] in ['А'..'п','р'..'я','-']) and (Length(S) <> 0)
        then
            begin
              Memo1.Lines.Add(S);
              S:='';
            end;
      if (ST[i] in ['А'..'п','р'..'я','-']) and (i = Length(ST))
        then Memo1.Lines.Add(S);
    end;
end;
ICQ: 593-013-807

Последний раз редактировалось Don Karleone; 21.10.2010 в 15:07.
Don Karleone вне форума Ответить с цитированием
Старый 22.10.2010, 06:16   #10
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

Цитата:
Сообщение от Don Karleone Посмотреть сообщение
А также вопрос, какова длина текста (максимальная)? Известно ли какими символоми разделены слова в тексте или же это обычный текст, слова в котором могут разделятся любыми символами (например , . ; и т. д.)?

А вообще, при условии, что слова состоят из русских букв, могут разделяться символами '-',',','.' и т.д. но только не сепаратором, могу предложить такой код для получения отдельных слов текста:
В последнем документе длинна текста была - 22500 строк. Максимальная длинна предположительно будет не более 35000 строк.
Уже создал утилитку для деления текста на куски.

В основном сепаратор будет "-" и артефакты.
Попробую чего можно выжать из вашего кода, завтра отпишу.
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить браузер рисовать рамку вокруг пустой ячейки? Stilet HTML и CSS 7 11.09.2012 13:36
как заставить линию вращатся вокруг её центра? barbossa Общие вопросы C/C++ 6 24.09.2009 04:42
Как нарисовать треугольник, который движется вокруг одной из своих вершин??? Оля1990 Помощь студентам 2 25.04.2009 19:28
Как изменить стиль гиперссылки? Нужно убрать рамку вокруг картинки. GLB HTML и CSS 5 18.01.2009 19:18
как можно врощать компонент image вокруг себя? steck Мультимедиа в Delphi 1 31.08.2007 12:04