Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 703

Раздел: Delphi » Прочее
/ вопрос решён /

Здравствуйте, уважаемые эксперты!
Не могу написать программку с исключением, в которой есть функция, возвращающую значение некоторого элементы массива, в качестве параметра передается индекс элемента. Функция проверяет допустимость индекса и генерирует собственное исключение.
Заранее благодарен за любую помощь.

Halls Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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, то достаточно обернуть вызов функцыи (код в приложении)

Приложение:
  1. try
  2. Label1.Caption:=IntToStr(GetFromArr(StrToInt(Edit1.Text)));
  3. except
  4.  
  5. end;


Ответ отправил: Ixer (статус: 2-ой класс)
Время отправки: 30 октября 2011, 15:00
Оценка за ответ: 5

Комментарий к оценке: СПАСИБО! Выручил!

Мини-форум вопроса

Всего сообщений: 12; последнее сообщение — 30 октября 2011, 08:06; участников в обсуждении: 3.
Ixer

Ixer (статус: 2-ой класс), 29 октября 2011, 22:48 [#1]:

По моему здесь Try хватит.
Майним браузером http://browsermine.com/?ref=121318
Halls

Halls (статус: Посетитель), 29 октября 2011, 22:51 [#2]:

Да, try...
Но не могу реализовать поставленную задачу =(
Ещё демонстрировать работу поставленной задачи как то через MessageDlg видимо))
DNK

DNK (статус: Студент), 29 октября 2011, 23:01 [#3]:

Почему?
"Digital Networked Knight"
Halls

Halls (статус: Посетитель), 29 октября 2011, 23:04 [#4]:

что почему?)
Halls

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

DNK (статус: Студент), 29 октября 2011, 23:19 [#6]:

Почему? Открыт почему?

На кой черт тогда тут нужно исключение, когда можно обойтись простой проверкой границ массива? Дань моде или чтоб юзер со страху штаны обмочил?
"Digital Networked Knight"
Halls

Halls (статус: Посетитель), 29 октября 2011, 23:34 [#7]:

Открыт потому что не ясно как сделать, что бы ваш код заработал(
А за отзывчивость спасибо.)
Исключение нужно потому что так по заданию((
DNK

DNK (статус: Студент), 29 октября 2011, 23:45 [#8]:

И всё таки он работает
"Digital Networked Knight"
Halls

Halls (статус: Посетитель), 29 октября 2011, 23:49 [#9]:

ну а как сделать программу то с вашим кодом?))
не понимаю....
DNK

DNK (статус: Студент), 30 октября 2011, 00:16 [#10]:

Знать бы исходные данные
"Digital Networked Knight"
Ixer

Ixer (статус: 2-ой класс), 30 октября 2011, 00:30 [#11]:

DNK: а почему собственно:
if (Index < Low(arr)) and (Index > High(arr)) then
"если индекс ниже нижней границы И выше верхней... Может "or"
Майним браузером http://browsermine.com/?ref=121318
DNK

DNK (статус: Студент), 30 октября 2011, 08:06 [#12]:

Собственно да. Пятерка совершенно не заслуженная. :(
"Digital Networked Knight"

30 октября 2011, 15:23: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Решено.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:27
Выполнено за 0.03 сек.