Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.58/12: Рейтинг темы: голосов - 12, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 7
1

Избавиться от ошибки при нажатии на кнопку "Вперед" или "Назад" в браузере

29.03.2012, 00:04. Показов 2440. Ответов 15
Метки нет (Все метки)

При создании нечто похожего на браузер, появилась такая проблемка: я создаю две кнопки "Вперёд" и "Назад", но если я не перехожу по ссылкам загружаемого сайта, то при нажатии одной из этих кнопок вылетает ошибка.
Как от неё избавиться?

Если можно то лучше продемонстрируйте кусочек этого кода
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2012, 00:04
Ответы с готовыми решениями:

Браузер (переход "Назад" и "Вперед")
Народ, подскажите как программно убрать ошибки?? Код первой кнопки: WebBrowser1.GoForward;...

RichEdit и кнопки "шаг вперед" "шаг назад"
Всем привет, вот задался я целью написать клиент для переписки на одном форуме, все уже сделал...

Как избавиться от ошибки при фильтрации "Аргументы имеют неверный тип"
Такой вопрос, если в денежный тип файлов написать слово, то программа выдает ошибку и не может...

В каждом слове текста замените "а" на букву "е", если "а" стоит на четном месте, и заменить букву "б" на сочетание "ак",
В каждом слове текста замените "а" на букву "е", если "а" стоит на четном месте, и заменить букву...

15
6033 / 2150 / 750
Регистрация: 10.12.2010
Сообщений: 5,996
Записей в блоге: 3
29.03.2012, 00:07 2
Цитата Сообщение от Filo$oF Посмотреть сообщение
Как от неё избавиться?
Зависит от того, как вы нажатия обработали. Код в студию!
0
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 7
29.03.2012, 00:21  [ТС] 3
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
WebBrowser1.GoBack;
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
WebBrowser1.GoForward;
end;
Вот, как-то так...
0
6033 / 2150 / 750
Регистрация: 10.12.2010
Сообщений: 5,996
Записей в блоге: 3
29.03.2012, 00:29 4
Предусмотреть случаи, когда "некуда" идти.
0
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 7
29.03.2012, 00:33  [ТС] 5
Цитата Сообщение от HighPredator Посмотреть сообщение
Предусмотреть случаи, когда "некуда" идти.
Эм... а можно наглядно показать?
Я просто в этом деле... чайник.
0
657 / 527 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
29.03.2012, 01:50 6
Цитата Сообщение от Filo$oF Посмотреть сообщение
Как от неё избавиться?
Избавиться можно очень лего, заключить метод обработчика в конструкцию "try".
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
    try
        WebBrowser1.GoBack;
    expect
    end;
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
    try
        WebBrowser1.GoForward;
    expect
    end;
end;
Добавлено через 56 секунд
А вот некоторая информация по этой конструкции: http://www.delphibasics.co.uk/RTL.asp?Name=Try
1
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 902
29.03.2012, 05:11 7
Цитата Сообщение от Дмитрий3241 Посмотреть сообщение
expect
Заменить на:
Delphi
1
except
0
657 / 527 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
29.03.2012, 05:20 8
Цитата Сообщение от HyperZen Посмотреть сообщение
Заменить на:
Код Delphi1 except
Теряю форму.
0
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 7
29.03.2012, 06:31  [ТС] 9
Цитата Сообщение от Дмитрий3241 Посмотреть сообщение
Избавиться можно очень лего, заключить метод обработчика в конструкцию "try".
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
    try
        WebBrowser1.GoBack;
    expect
    end;
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
    try
        WebBrowser1.GoForward;
    expect
    end;
end;
Добавлено через 56 секунд
А вот некоторая информация по этой конструкции: http://www.delphibasics.co.uk/RTL.asp?Name=Try
Не помогло. Ошибка всё ровно вылазит...
Миниатюры
Избавиться от ошибки при нажатии на кнопку "Вперед" или "Назад" в браузере  
0
657 / 527 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
29.03.2012, 08:19 10
Цитата Сообщение от Filo$oF Посмотреть сообщение
Не помогло. Ошибка всё ровно вылазит...
Да, вы правы, ошибка по прежнему присутствует.
Сейчас скачаю Delphi и попробую решить данную проблему.
0
13077 / 5862 / 1706
Регистрация: 19.09.2009
Сообщений: 8,807
29.03.2012, 09:22 11
Здесь лучше действовать непосредственно через свойства и методы DOM модели HTML документа.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Работа с DOM объектом, представляющим историю переходов.
procedure TForm1.Button1Click(Sender: TObject);
var
  Doc, Hist : Variant;
begin
  //Ссылка на интерфейс документа.
  Doc := WebBrowser1.OleObject.document;
  //Если документа нет - выходим.
  if TVarData(Doc).VDispatch = nil then Exit;
  
  //Объект документа - объект родительского окна - объект, представляющий
  //историю переходов.
  Hist := Doc.parentWindow.history;
  //Переход к предыдущему URL.
  Hist.go(-1);
end;
Если объект history нужен для разового действия, то можно не заводить для него отдельную переменную:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Работа с DOM объектом, представляющим историю переходов.
procedure TForm1.Button1Click(Sender: TObject);
var
  Doc : Variant;
begin
  //Ссылка на интерфейс документа.
  Doc := WebBrowser1.OleObject.document;
  //Если документа нет - выходим.
  if TVarData(Doc).VDispatch = nil then Exit;
  
  //Объект документа - объект родительского окна - объект, представляющий
  //историю переходов - вызов метода go() для перехода к предыдущему URL.
  Doc.parentWindow.history.go(-1);;
end;
Справка по DOM HTML.
Структура DOM HTML.
1
657 / 527 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
29.03.2012, 09:25 12
Mawrat, спасибо тебе.
А то я уже час ломаю компилятор в попытке обработать исключение разными способами.
Теперь у меня вопрос:
Почему не обрабатываеться исключения конструкцией (try except)?
0
13077 / 5862 / 1706
Регистрация: 19.09.2009
Сообщений: 8,807
29.03.2012, 09:38 13
Оно обрабатывается. Просто если запускать программу в отладчике Delphi, то при возникновении исключения, оно сначала обработается отладчиком. Поэтому, будет выведено сообщение о возникновении исключения. Если запустить программу в самостоятельном режиме (не из среды Delphi), то исключение будет обработано "по-тихому".
1
657 / 527 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
29.03.2012, 09:50 14
Mawrat, спасибо, а то уже подумал плохого...
0
13077 / 5862 / 1706
Регистрация: 19.09.2009
Сообщений: 8,807
29.03.2012, 09:58 15
По вещественным числам можно посмотреть, например, в этой теме.
Что касается представленного кода - там возникнет исключение "деление на ноль". Если подключить модуль Math и использовать тип Extended вместо Double, то можно использовать специальное значение Infinity - оно означает +∞.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uses
  Math;
 
var
  a : Extended;
begin
  Randomize;
  case Random(2) of
    0 : a := 1 / 0;
    1 : a := -1 / 0;
  end;
  
  if a = Infinity then
    ShowMessage('a = Infinity')
  else if a = -Infinity then
    ShowMessage('a = -Infinity')
  else
    ShowMessage('a = ' + FloatToStr(a))
  ;
end;
0
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 7
29.03.2012, 21:15  [ТС] 16
Спасибо большое, всё работает!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2012, 21:15

Из слов "Работа", "крест", "тон" составить фразу "Кто не работает, тот не ест" и определить ее длину
Из слова "Работа","крест","тон" составить фразу:"Кто не работает, тот не ест" и определить ее длину.

На форме располагаются компоненты: редактор Edit; линейка ScrollBar; радионабор с опциями "Цветы", "Деревья", "Рыбы", "Звери"
Доброго времени суток, 2 курс 2 семестр, пришли, препод раздал задачи, сказал качайте дома и...

Сделать, чтобы при нажатии на кнопку открывалась "вторая" программа
тема такая: вот у меня две программы написанные на делфи (будем называть их "первая" и...

При нажатии Delete показать сообщение "On", при повторном нажатии - "Off"
нужно что бы при нажатии ДЕЛЕТЕ показал сообщения ОН при повторном нажатии показал ОФФ этот код...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru