|
Вопрос # 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: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Решено.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|