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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2012, 10:41   #1
kami46
Пользователь
 
Регистрация: 30.10.2010
Сообщений: 10
По умолчанию Invalid pointer operation (delphi)

Здравствуйте, помогите, пожалуйста, устранить ошибку. Моя программа составляет частотный словарь словосочетаний по заданному в мемо тексту. Если текст занимает 15 строчек, то всё прекрасно работает, а если например 300, то выдает ошибку "Invalid pionter operation".

Ошибка выскакивает после выполнения данного участка кода.

Код:
{Подсчет и удаление одинаковых фраз}
p := 0;
e := 1;
for i := 0 to length(frazi)-1 do
begin
s := frazi[i];
  for j := i+1 to length(frazi)-1 do
    begin
      if s=frazi[j] then begin
                           e := e+1;
                           for p := j+1 to length(frazi)-1 do
                                 frazi[p-1] := frazi [p];
                                 setlength (frazi, length(frazi)-1);
                         end;
    end;
    frazi[i]:= inttostr(e)+'........'+frazi[i];
    e := 1;
end;
'frazi' - это массив строк, в котором хранятся все словосочетания текста (т.е. 2 слова, стоящие рядом в одном предложении), каждый элемент соответственно равен фразе.

Здесь происходит поиск одинаковых элементов массива (т.е. словосочетаний в тексте). Если мы встречаем одинаковые словосочетания, то счетчик увеличиваем на 1, а 2-ю одинаковую фразу удаляем, ну и кол-во повторений каждого словосочетания мы добавляем к самому словосочетанию во frazi[i], разделяя словосочетания и счетчик многоточием (.........).
kami46 вне форума Ответить с цитированием
Старый 09.06.2012, 10:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а не лучше ли воспользоваться наследником от TStrings - TStringList ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.06.2012, 10:49   #3
kami46
Пользователь
 
Регистрация: 30.10.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а не лучше ли воспользоваться наследником от TStrings - TStringList ?
К сожалению я не умею с ним работать
Что конкретно нужно с ним делать, поясните, пожалуйста
kami46 вне форума Ответить с цитированием
Старый 09.06.2012, 11:21   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

хм... вы меня вопросом в тупик поставили...
что значит - "что конкретно с ним нужно делать" ?! Его нужно ИСПОЛЬЗОВАТЬ!

Как - вместо вашего динамического массива frazi

что такое TStringList рекомендую почитать (в любой книжке по Delphi/справке Delphi, поиском в Интернете)...

конкретные примеры использования можете посмотреть, например (поиском навскидку нашёл более-менее похожее на вашу задачу):

Удаление дубликатов строк

Как избежать повтор строк в тексте

Количество одинаковых слов в строке. Delphi

Статистика слов в тексте
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.06.2012, 12:05   #5
kami46
Пользователь
 
Регистрация: 30.10.2010
Сообщений: 10
По умолчанию

спасибо, попробую
kami46 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Invalid Pointer operation hon Общие вопросы Delphi 6 22.11.2011 21:59
Invalid Pointer Operation Стелс Компоненты Delphi 1 25.09.2011 21:24
Invalid Pointer Operation csander Общие вопросы Delphi 0 21.10.2009 17:44
Invalid Pointer Operation Unconnected Общие вопросы Delphi 3 21.02.2009 20:23
Invalid pointer operation Димарик Общие вопросы Delphi 2 05.11.2007 09:53