| 
| 
 | Вопрос # 5 703/ вопрос решён / | 
 |  Здравствуйте, уважаемые эксперты!Не могу написать программку с исключением, в которой есть функция, возвращающую значение некоторого элементы массива, в качестве параметра передается индекс элемента. Функция проверяет допустимость индекса и генерирует собственное исключение.
 Заранее благодарен за любую помощь.
 
|  |   Вопрос задал: Halls (статус: Посетитель)Вопрос отправлен: 29 октября 2011, 22:45
 Состояние вопроса: решён, ответов: 2.
 |  Ответ #1. Отвечает эксперт: DNK Здравствуйте, Halls!
 if (Index < Low(arr)) and (Index > High(arr)) then
  raise EMyRangeException.Create
else
  Result := arr[Index]; 
|  | Ответ отправил: DNK (статус: Студент)Время отправки: 29 октября 2011, 22:52
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо! Но вопрос остаётся открытым) |  Ответ #2. Отвечает эксперт: Ixer Здравствуйте, Halls!Впринцыпе DNK уже ответил на ваш вопрос, но там есть одна маленькая ошыбка. Даю вам код програмы где использован етот алгоритм.
 фрагмент кода
 Если же вам нужно еще й Try, то достаточно обернуть вызов функцыи (код в приложении)
 
|  | Ответ отправил: Ixer (статус: 2-ой класс)Время отправки: 30 октября 2011, 15:00
 Оценка за ответ: 5
 Комментарий к оценке: СПАСИБО! Выручил! |  
 Мини-форум вопросаВсего сообщений: 12; последнее сообщение — 30 октября 2011, 08:06; участников в обсуждении: 3. 
|   | Ixer (статус: 2-ой класс), 29 октября 2011, 22:48 [#1]:По моему здесь Try хватит. Майним браузером http://browsermine.com/?ref=121318 |  
|   | Halls (статус: Посетитель), 29 октября 2011, 22:51 [#2]:Да, try... Но не могу реализовать поставленную задачу =(
 Ещё демонстрировать работу поставленной задачи как то через MessageDlg видимо))
 |  
|   | DNK (статус: Студент), 29 октября 2011, 23:01 [#3]:Почему? "Digital Networked Knight" |  
|   | Halls (статус: Посетитель), 29 октября 2011, 23:04 [#4]:что почему?) |  
|   | Halls (статус: Посетитель), 29 октября 2011, 23:08 [#5]:Вообщем что-то типа такого формата в итоге должно получиться, у меня, увы, не получается... 
 procedure TForm1.Button1Click(Sender: TObject);
const
  CR = #13#10;
var
  i : Integer;
  S, S1, S2, S3 : string;
begin
  try
    raise EMyException.Create ('Возникло исключение !!!');
  except
    on E: EMyException do begin
      S := ('Класс в котором произошло исключение: ' + Self.ClassName);
      S1 := 'Тип ошибки: ' + E.ClassName;
      S2 := 'Ошибка: ' + E.Message;
      S3 := ' Адрес ошибки: ' + Format('%p', [ExceptAddr]);
      MessageDlg (S + CR +S1 + CR + S2 + CR + S3, mtError, [mbOk], 0);
end;
  end;
end; |  
|   | DNK (статус: Студент), 29 октября 2011, 23:19 [#6]:Почему? Открыт почему? 
 На кой черт тогда тут нужно исключение, когда можно обойтись простой проверкой границ массива? Дань моде или чтоб юзер со страху штаны обмочил?
 "Digital Networked Knight" |  
|   | Halls (статус: Посетитель), 29 октября 2011, 23:34 [#7]:Открыт потому что не ясно как сделать, что бы ваш код заработал( А за отзывчивость спасибо.)
 Исключение нужно потому что так по заданию((
 |  
|   | DNK (статус: Студент), 29 октября 2011, 23:45 [#8]:И всё таки он работает "Digital Networked Knight" |  
|   | Halls (статус: Посетитель), 29 октября 2011, 23:49 [#9]:ну а как сделать программу то с вашим кодом?)) не понимаю....
 |  
|   | DNK (статус: Студент), 30 октября 2011, 00:16 [#10]:Знать бы исходные данные "Digital Networked Knight" |  
|   | Ixer (статус: 2-ой класс), 30 октября 2011, 00:30 [#11]:DNK: а почему собственно: 
 if (Index < Low(arr)) and (Index > High(arr)) then"если индекс ниже нижней границы И выше верхней... Может "or" Майним браузером http://browsermine.com/?ref=121318 |  
|   | DNK (статус: Студент), 30 октября 2011, 08:06 [#12]:Собственно да. Пятерка совершенно не заслуженная.   "Digital Networked Knight" |  30 октября 2011, 15:23: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Решено. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |