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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.08.2013, 19:43   #1
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию Объясните поведение Index в классе TStringList

Вот строка кода:
Код:
s:=s + StrList.Strings[i];
i тут integer,равно 4,строка под номером 4 существует.Объясните почему приложение вылетает с критической ошибкой на этой строке?
Zadovatel вне форума
Старый 30.08.2013, 19:49   #2
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Потому что нумерация строк в TStrings начинается с нуля

Код:
for i:=0 to list.count-1 do
 begin

 end;
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума
Старый 30.08.2013, 20:09   #3
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Все равно не понимаю.Как это связано?Я ведь обращаюсь к конкретной строке под конкретным номером.В данном примере хочу записать содержимое 5-й строки.
Zadovatel вне форума
Старый 30.08.2013, 20:12   #4
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Штатный экстрасенс у нас уволился. Покажите код, где вы пытаетесь это сделать.

Создали ли Вы экземпляр класса, прежде чем пытаетесь записать значение? В общем пока кода нет, говорить тут можно бесконечно
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума
Старый 30.08.2013, 20:24   #5
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Код:
procedure SMSMesProc;
   Var
   s:string;
   sBuf:string;
   i:integer;
   begin
   i:=SMSList[0]+1;
   Form1.Memo2.lines.add(IntToStr(i));
   repeat
   s:=s + StrList.Strings[i];;
   Until  i > SMSList[1]-1;
   SMSMes.add(s);
   SMSMes.SaveToFile('C:\info.txt');
   end;
Переменная глобальная.Объект создан,проинициализирован и значения заполнены.Совсем забыл.В списке присутствуют строки ,состоящие всего из двух символов:#13#10.Возможно это может являться причиной такого поведения?

Последний раз редактировалось Zadovatel; 30.08.2013 в 20:29.
Zadovatel вне форума
Старый 30.08.2013, 20:31   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,883
По умолчанию

Код:
   repeat
   s:=s + StrList.Strings[i];;
   Until  i > SMSList[1]-1;
Что должно произойти чтобы из этого цикла нашелся бы выход?
northener вне форума
Старый 30.08.2013, 20:36   #7
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Тут сам код непонятен. Вообще не логичен. Но на ошибку со стринглист он не влияет. В коде нет ни инициализации объекта, ни его заполнения. Возможно он просто где-то уничтожается до этого кода.

Цитата:
Объясните почему приложение вылетает с критической ошибкой на этой строке?
Какая хоть ошибка появляется?
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума
Старый 30.08.2013, 20:37   #8
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Прошу прощения,поправил.
Код:
procedure SMSMesProc;
   Var
   s:string;
   i:integer;
   begin
   i:=SMSList[0]+1;
   Form1.Memo2.lines.add(IntToStr(i));
   repeat
   s:=s + StrList.Strings[i];
   inc(i);
   Until  i > SMSList[1]-1;
   SMSMes.add(s);
   SMSMes.SaveToFile('C:\info.txt');
   end;

Последний раз редактировалось Zadovatel; 30.08.2013 в 20:46.
Zadovatel вне форума
Старый 30.08.2013, 20:42   #9
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Номера нет.Запускаем приложение,все прекрасно работает.Стоит запустить данную функцию и приложение падает.Если закоментировать данную строку,то приложение прекрасно работает.
Zadovatel вне форума
Старый 30.08.2013, 20:45   #10
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Код:
procedure SMSMesProc;
   Var
   s:string;
   i:integer;
   begin
   i:=SMSList[0]+1;
   //Form1.Memo2.lines.add(IntToStr(i));
   repeat
   //s:=s + StrList.Strings[i];
   Form1.Memo2.lines.add(IntToStr(i));
   inc(i);
   Until  i > SMSList[1]-1;
   SMSMes.add(s);
   SMSMes.SaveToFile('C:\info.txt');
   end;
Вот другой вариант-функция отрабатывает все 110%.
Zadovatel вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mod_rewrite: все на index.php без www и index.php TrydORgolik PHP 2 18.02.2013 18:19
Сделать чтобы функция стандартная String.Delete работала в классе потомке от TStringList? nick17 Общие вопросы Delphi 4 09.11.2010 14:17
<index></index> DrStrangeLove HTML и CSS 1 08.10.2010 21:38
Странное поведение gets alex_alpha Общие вопросы C/C++ 3 27.03.2010 18:21
поведение браузеров Antoha HTML и CSS 2 30.05.2009 22:09