Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при копировании символа из строки, Ошибка при копировании символа из строки 
:(
    Опции темы
Pcrepair
Дата 14.7.2012, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Добрый день. Есть код

Код

function TForm1.CompareWords(var W1,W2: string; var CompareLevel:integer):boolean;
var
NumSymWord1,NumSymWord2,Divide,i:integer;
s1,s2: char;
begin
  NumSymWord1 := Length(W1);
  NumSymWord2 :=0;
(*============ ЦИКЛ =============================*)
        for i := 1 to Length(W1) do
         begin
           s1:=W1[1];
           s2:=W2[1];  (*если ПЕРЕМ=пусто то ошибка, отладчик указывает на эту строку*)
           if s1=s2 then
           NumSymWord2 := (NumSymWord2+1);
           delete(W1, 1,1); (*удаляем уже обработанный символ*)
           delete(W2, 1,1);
         end;
(*===============================================*)
         if NumSymWord1 > 0 then
          begin
           Divide := ((NumSymWord2*100)div NumSymWord1);
          end;
      if Divide > CompareLevel then
      CompareWords := TRUE;
end;


Функция проверки соответсвия двух слов посимвольно, с выводом результата ДА или НЕТ. и с порогом определения
Вопрос: почему когда в s2:=W2[1]; нет символов(удалены в передыдущих циклах) выскакивает ошибка? при попытке присвоения 

символьной переменной NIL? где тут ошибка?
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
bems
Дата 14.7.2012, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



обращение к несуществующему символу это ошибка, еще до попытки присваивания результата обращения строковой переменной. Иди в цикле до длины более короткой строки, и если после цикла одна из строк осталась непустой, то считай оставшиеся символы отличиями


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Rennigth
Дата 14.7.2012, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Дублировать не буду, goto Sources


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Pcrepair
Дата 14.7.2012, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



всем спасибо за ценные разъяснения
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0951 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.