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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2012, 23:49   #1
Razdolbai
Новичок
Джуниор
 
Регистрация: 12.11.2012
Сообщений: 20
По умолчанию Проверка на ошибку программы

Цитата:
Unhandled Exception: System.IndexOutOfRangeException: Index was outside the boun
ds of the array.
at System.String.get_Chars(Int32 index)
at ardabyev_words_search_113b.ardabyev _words_search_113b.$Main() in F:\Pascal
ABC.NET\Projects\Kazbekov\words_sea rch\ardabyev_words_search_113b.pas: line 38
at ardabyev_words_search_113b.Program. Main()Программа завершена, нажмите любу
ю клавишу . . .
почему выдаёт такую ошибку?

Код:
program ardabyev_words_search_113b;
uses
  CRT;
var
  words: array of string;
  aString, temp, userValue, path: string;
  aText: Text;
  wordsCount: integer;
  i: longint;
  flag: char;
begin
  repeat
    flag := #0;
    ClrScr;
    writeln('Type a path to your .txt file (for ex.:, C:\books\text.txt):');
    readln(path);
    Assign(aText, path);
    Reset(aText);
    wordsCount := 0;
    while flag <> #13 do
    begin
      writeln('Enter a letter or word, the first letter of which to be carried out search:');
      readln(userValue);
      writeln('Press Enter to confirm a valid entrance or any another key to fix the entered values');
      flag := ReadKey;
    end;
    writeln();
    while not Eof(aText) do
    begin
      readln(aText, aString);
      for i := 1 to length(aString) do
        if (aString[i] <> ' ') and (i <> length(aString)) then
        begin
          if aString[i] in ['A'..'z', 'А'..'я'] then
            temp := temp + LowerCase(aString[i]);
        end
        else
          if temp[1] = LowerCase(userValue[1]) then
          begin
            if i = length(aString) then
              temp := temp + LowerCase(aString[i]);
            Inc(wordsCount);
            SetLength(words, wordsCount);
            words[wordsCount - 1] := temp;
            temp := '';
          end
          else
            temp := '';
    end;
    if wordsCount = 0 then
      writeln('There are no words that start with your letter in the text')
    else
      writeln('Found words for the letter ', userValue[1], ':');
    Close(aText);
    for i := 1 to wordsCount do
      writeln(i, ': ', words[i - 1]);
    words := nil;
    writeln('Press any key to restart or Esc to exit');
    flag := ReadKey;
  until flag = #27;
end.
вот код

Последний раз редактировалось Stilet; 13.11.2012 в 00:58.
Razdolbai вне форума Ответить с цитированием
Старый 13.11.2012, 10:58   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

и temp и uservalue могут не иметь символов (='' \ length(..)=0 )
в этом случае uservalue[1] (temp[1]) и есть
Цитата:
Index was outside the boun
ds of the array.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка программы Frank63 Паскаль, Turbo Pascal, PascalABC.NET 5 07.10.2012 22:40
проверка программы swat16 Помощь студентам 6 20.04.2012 10:30
проверка на ошибку serres Общие вопросы .NET 3 28.02.2010 22:23
Delphi + Excel проверка ячейки на ошибку Tirendus Общие вопросы Delphi 0 26.02.2010 15:49
проверка программы PradoSV Общие вопросы C/C++ 0 14.12.2009 21:26