Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
uh-aleks
6 / 6 / 0
Регистрация: 02.01.2010
Сообщений: 68
#1

Исключительные ситуации - Delphi

03.01.2010, 23:45. Просмотров 1361. Ответов 10
Метки нет (Все метки)

Как можно заменить стандартный текст исключительной ситуации на свой, характерный для определённой исключительной ситуации, в данном случае EConvertError. Я пробовал в секции except выводить обычное сообщение ShowMessage, с нужным мне текстом, но после ShowMessage, появляется ещё стандартное окно этой ошибки. Т.е. получается 2 сообщения, в принципе об одном и том же. Как вы посоветуете сделать, лучше заменять текст стандартной исключительной ситуации или после моего сообщения, каким-то образом не показывать стандартное сообщение? Объясните пожалуйста как это сделать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2010, 23:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Исключительные ситуации (Delphi):

Исключительные ситуации. - Delphi
try y := strToFloat(edit2.text); except showmessage('Error!' + edit2.text); edit2.setfocus; exit; end; ...

Исключительные ситуации - Delphi
Что за исключительная ситуация EEndOfFile?

Исключительные ситуации - Delphi
Здравствуйте уважаемые эксперты! Есть компонент StringGrid, нужно проверить все ли ячейки заполнены. Вот получившийся код:try for...

Исключительные ситуации - Delphi
Дана программа на массив. procedure TForm1.Button1Click(Sender: TObject); var i:byte; a, b: string; min: integer; begin ...

ИС: Исключительные ситуации - Delphi
Помогите пожалуйста со следующей задачей: Разработать программу, содержащую обработчики заданных исключительных ситуаций: 1) EcontrolC;...

Исключительные ситуации - Delphi
Добрых времени суток, господа. У меня к Вам пару вопросов: 1) Как контролировать ввод шестнадцатеричных символов в поле, допустим, edit??...

10
FeLDM@RSh@L
Брюс Всемогущий
35 / 35 / 1
Регистрация: 02.09.2008
Сообщений: 256
04.01.2010, 07:28 #2
блок try.....except - для анализа исключительной ситуации, и описание повидения при ней. Он по умалчанию перехватывает стандартные исключительные ситуации, просто ты не так наверно им пользуешься.
Можно например так:

Delphi
1
2
3
4
5
try
  // ..........
  except On EConvertError Do
    MessageDlg('Ошибка конвертации',mtError,[mbCancel],0);
end;
1
uh-aleks
6 / 6 / 0
Регистрация: 02.01.2010
Сообщений: 68
04.01.2010, 13:50  [ТС] #3
FeLDM@RSh@L, спасибо разобрался. А возможно как-то русифицировать кнопки?
0
DannerDOS
Programmer
39 / 39 / 3
Регистрация: 07.04.2009
Сообщений: 187
04.01.2010, 22:34 #4
Почему бы вам свое окно не создать и не вызывать в дальнейшем...
0
Somebody
2799 / 1610 / 150
Регистрация: 03.12.2007
Сообщений: 4,210
Завершенные тесты: 3
04.01.2010, 22:45 #5
Цитата Сообщение от DannerDOS Посмотреть сообщение
Почему бы вам свое окно не создать и не вызывать в дальнейшем...
Вообще-то можно, но использовать существующий велосипед удобнее (если он соответствует потребностям).
Цитата Сообщение от uh-aleks Посмотреть сообщение
А возможно как-то русифицировать кнопки?
Судя по всему, их названия - в модуле Consts, если его подредактировать... Или можно использовать простой WinApi'шный MessageBox.
0
uh-aleks
6 / 6 / 0
Регистрация: 02.01.2010
Сообщений: 68
05.01.2010, 00:28  [ТС] #6
Цитата Сообщение от Somebody Посмотреть сообщение
в модуле Consts, если его подредактировать...
Да, про редактирование Consts.pas я знаю так и русифицировал, но после перекомпиляции всё равно по английски. Я слышал что после редактирования Consts.pas нужно пересобрать VCL, но как это сделать я не понял. Объясните кто знает пожалуйста.

Добавлено через 42 минуты
Цитата Сообщение от DannerDOS Посмотреть сообщение
Почему бы вам свое окно не создать и не вызывать в дальнейшем...
Свои сообщения как отдельные формы я создавал, но только мне не нравиться что при появлении, допустим Form2, главная форма тоже активна. Мне бы хотелось чтоб также, как в случае с MessageDlg, на главной форме нельзя было ничего выбрать пока не нажмёшь ОК у MessageDlg. Объясните кто знает как при появлении Form2, Form1 была не активной и до тех пор пока не закроется Form2
0
*~<`PIK`>~*
ﻌﺹ ﺦ ﺖﻀ ﺹ ﻙ ﺵﻔ ﺊ ﺘﺝ
606 / 386 / 18
Регистрация: 15.12.2009
Сообщений: 753
05.01.2010, 00:30 #7
Просто при вызове Form2 пиши Form2.ShowModal;
1
deathNC
1891 / 1004 / 27
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
05.01.2010, 09:15 #8
Цитата Сообщение от Somebody Посмотреть сообщение
Или можно использовать простой WinApi'шный MessageBox.
ага, согласен... я вообще зачастую MessageBox использую...

Delphi
1
2
3
4
5
// Вот такое объявление я нашёл в Delphi 7
MessageBox(hWnd: THandle, lpText: PAnsiChar, lpCaption: PAnsiChar, uType: Cardinal);
 
// А в Delphi 2009 я её тока так нашёл:
MessageBox(hWnd: THandle, lpText: PWideChar, lpCaption: PWideChar, uType: Cardinal);
0
uh-aleks
6 / 6 / 0
Регистрация: 02.01.2010
Сообщений: 68
05.01.2010, 13:58  [ТС] #9
deathNC, что-то с delphi 2009 ты перепутал. У меня delphi 2010, в этой строке выдаёт 8 ошибок. PWideChar в delphi 2009 - 2010 вообще не пишут, т.к. в этих версиях все строки по умолчанию имеют тип WideChar, т.е. Unicode
0
deathNC
1891 / 1004 / 27
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
05.01.2010, 14:32 #10
ОК, сейчас открою и скопирую заголовки функций...

может ты прав, а может и нет...

сейчас выясним!!!

Добавлено через 4 минуты
Цитата Сообщение от uh-aleks Посмотреть сообщение
deathNC, что-то с delphi 2009 ты перепутал. У меня delphi 2010, в этой строке выдаёт 8 ошибок. PWideChar в delphi 2009 - 2010 вообще не пишут, т.к. в этих версиях все строки по умолчанию имеют тип WideChar, т.е. Unicode
У меня есть и PWideChar и WideChar..... может, у тебя не объявлен PWideChar?

У меня всё пашет...

Ну, тогда просто, раз WideChar есть, так его используй... для перевода S: String просто писать WideChar(S) и всё...

Добавлено через 20 минут
Постой, а покажи проект... просто скопируй его сюда... я хочу посмотреть, как ты использовал MessageBox;

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TMainForm.Button1Click(Sender: TObject);
var
  Resultat: Cardinal;
  MCaption, MText: String;
begin
  MCaption := 'Microsoft Windows Seven Question'; // ГІГіГІ ГЇГЁГёГҐГёГј Г§Г*ãîëîâîê îêГ*Г*
  MText := 'Âû õîòèòå Г±Г*ГҐГ±ГІГЁ Windows, ГЁ ГіГ±ГІГ*Г*îâèò Linux?'; //
  Resultat := MessageBox(MainForm.Handle, PAnsiChar(MCaption),
              PAnsiChar(MCaption), mb_YesNo or mb_IconQuestion);
  // Âîò ГЄГ*ГЄ Г*Г*äî èñïîëüçîâГ*ГІГј!!!
end;
[IMG]http://i021.***********/1001/90/a3da148c8902.png[/IMG]
1
uh-aleks
6 / 6 / 0
Регистрация: 02.01.2010
Сообщений: 68
05.01.2010, 15:52  [ТС] #11
deathNC, большое спасибо за разъяснение. Разобрался.
0
05.01.2010, 15:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2010, 15:52
Привет! Вот еще темы с ответами:

Исключительные события - Delphi
Помогите найти ошибку. Надо преобразовать строку в число, как обработать событие, если например в строке не цифры а буква и процедура...

Предотвращение исключительной ситуации - Delphi
Здраствуйте, возникла проблема с предотвращением исключительных ситуаций, связанных с ошибкой ввода значения, или вовсе с невведённым...

Обработка ситуации деления на ноль - Delphi
Как сделать при делении на 0 сообщение &quot;на 0 делить нельзя&quot;? Помогите!!!

Изменение окна сообщения для исключительной ситуации - Delphi
У меня есть обработчик исключительной ситуации: try // операторы except on EConvertError do raise ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru