Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
шарпопочитатель
58 / 25 / 7
Регистрация: 31.01.2010
Сообщений: 1,031
1

Исключения в билдере. Головная боль!

03.05.2011, 14:14. Просмотров 2530. Ответов 34
Метки нет (Все метки)

толи билдер такой наглый толи ещё че. не пойму.
Сделал обработку исключения
try{
char ADevice[100], ADriver[100], APort[100];
THandle Mode;
PDeviceMode DevMode;

Printer()->GetPrinter((wchar_t *)ADevice, (wchar_t *)ADriver, (wchar_t *)APort, Mode);
DevMode =(_devicemodeW*) GlobalLock((void *)Mode);

DevMode->dmFields |= DM_ORIENTATION;
DevMode->dmOrientation = DMORIENT_PORTRAIT ;// DMORIENT_LANDSCAPE; //

Form2->RichEdit1->Print("Печать");

GlobalUnlock(DevMode);

}
catch (...){
ShowMessage("Какой принтер установлен по умолчанию? Откройте Пуск-Принтеры и факсы. Выберите принтер. Нажмите правой кнопкой. И установите - Установить по умолчанию. Программа будет закрыта.");
Application->Terminate();
}
Делаю спецом исключение.

Вылетает эта мессага. Все отлично. Но какого то черта вылетает ещё 100 мессаг... о том что к памяти не так я обращаюсь. Какая скатина их порождает и как их отключить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2011, 14:14
Ответы с готовыми решениями:

Конструкторы - моя головная боль)
Помогите кто чем может!!! Мне надо создать конструктор который бы вычислял длину прямой, которая...

указатели и ссылки - головная боль!
Как вы уже догадались из названии темы, никак не пойму работу указателей и ссылок... Где нужно их...

Code Block и моя двухнедельная головная боль(
Здравствуйте, форумчане, помогите, пожалуйста, разобраться с этим Code Block-сом( В этой ...

Матрицы, головная боль
Эту тему я очень хотел бы развить как лично для себя, так и для других новичков которые...

34
4946 / 2410 / 530
Регистрация: 05.06.2008
Сообщений: 7,512
Записей в блоге: 3
03.05.2011, 14:20 2
А по дебагеру смотрел, чё там в памяти то?
0
шарпопочитатель
58 / 25 / 7
Регистрация: 31.01.2010
Сообщений: 1,031
03.05.2011, 14:46  [ТС] 3
А по дебагеру смотрел, чё там в памяти то?
дебагер это отладчик.
Что там в памяти должно быть? Сегмент кода что ли посмотреть?

Добавлено через 14 минут
2010 билдер. Может у него настройка какая то .

Добавлено через 10 минут
короче да, в билдере 2010 они не работают походу. Архангельский главно в книгах пишит своих постоянно говорит касяки какаие нить подобные.
0
3075 / 2396 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
03.05.2011, 14:54 4
Цитата Сообщение от ht1515 Посмотреть сообщение
char ADevice[100], ADriver[100], APort[100];
Цитата Сообщение от ht1515 Посмотреть сообщение
(wchar_t *)ADevice, (wchar_t *)ADriver, (wchar_t *)APort, Mode
это как понимать?
0
шарпопочитатель
58 / 25 / 7
Регистрация: 31.01.2010
Сообщений: 1,031
03.05.2011, 14:56  [ТС] 5
kazak, ну а как не понимать? Иначе не скомпилится.

Добавлено через 48 секунд
надо было сразу wchar_t объявлять, но так сделал
0
3075 / 2396 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
03.05.2011, 14:59 6
Но ты хоть осознаешь, что в char'ом массиве на 100 элементов может поместиться только 50 wchar'ов? Если ошибки вылетаеют именно на этом try'е, то стоит задуматься.
0
шарпопочитатель
58 / 25 / 7
Регистрация: 31.01.2010
Сообщений: 1,031
03.05.2011, 15:04  [ТС] 7
kazak, я в массив чаров ничего не пишу же.
Если так оставить
ADevice,ADriver,APort, Mode
то он попросить сконвертировать
0
Эксперт С++
2331 / 1704 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
03.05.2011, 15:09 8
Цитата Сообщение от ht1515 Посмотреть сообщение
kazak, я в массив чаров ничего не пишу же.
А что делает строка:
Цитата Сообщение от ht1515 Посмотреть сообщение
Printer()->GetPrinter((wchar_t *)ADevice, (wchar_t *)ADriver, (wchar_t *)APort, Mode);
?
Цитата Сообщение от ht1515 Посмотреть сообщение
Если так оставить
ADevice,ADriver,APort, Mode
то он попросить сконвертировать
А объявить их массивами wchar_t что мешает?
0
шарпопочитатель
58 / 25 / 7
Регистрация: 31.01.2010
Сообщений: 1,031
03.05.2011, 15:09  [ТС] 9
этот код нормально работает если принтер подключен поумолчанию-существует.
Но мне надо обработать исключение, потому как ситуации могут быть разные.
0
Эксперт С++
2331 / 1704 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
03.05.2011, 15:10 10
Цитата Сообщение от ht1515 Посмотреть сообщение
Архангельский главно в книгах пишит своих постоянно говорит касяки какаие нить подобные.
BCB - это один большой косяк.
0
шарпопочитатель
58 / 25 / 7
Регистрация: 31.01.2010
Сообщений: 1,031
03.05.2011, 15:12  [ТС] 11
CyBOSSeR, да без разницы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
try{
  wchar_t ADevice[100], ADriver[100], APort[100];
  THandle Mode;
  PDeviceMode DevMode;
 
  Printer()->GetPrinter(ADevice, ADriver, APort, Mode);
  DevMode =(_devicemodeW*) GlobalLock((void *)Mode);
 
  DevMode->dmFields |= DM_ORIENTATION;
  DevMode->dmOrientation = DMORIENT_PORTRAIT ;// DMORIENT_LANDSCAPE; //
 
 Form2->RichEdit1->Print("Печать");
 
  GlobalUnlock(DevMode);
 
}
catch (...){
      ShowMessage("Какой принтер установлен по умолчанию? Откройте  Пуск-Принтеры и факсы. Выберите принтер. Нажмите правой кнопкой. И установите - Установить по умолчанию. Программа будет закрыта.");
}
эффект тот же самый
0
Эксперт С++
2331 / 1704 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
03.05.2011, 15:19 12
Цитата Сообщение от ht1515 Посмотреть сообщение
эффект тот же самый
Конкретнее: какие исключения вылетают, что делает строка
C++
1
Printer()->GetPrinter(ADevice, ADriver, APort, Mode);
и т.д.
0
шарпопочитатель
58 / 25 / 7
Регистрация: 31.01.2010
Сообщений: 1,031
03.05.2011, 15:23  [ТС] 13
исключение вылетает на Form2->RichEdit1->Print("Печать");
Все остальное меняет на альбомный вид(при печати есть книжная и альбомная печать, ориентация листа).
если оставить только Form2->RichEdit1->Print("Печать"); - эффект будет тот де самый.
исключение вот
Печать поля Memo и RichEdit

Кстати там есть(картинку с исключением посмотрите) Ignore it excepton type.
Я её нажал, теперь просто тупо мессаги вылетают в бесконечном количестве.Как то вернуть можно это исключение(ну чтобы в таком виде рисовалось как на картинке)?
0
3075 / 2396 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
03.05.2011, 15:39 14
GetPrinter всего лишь получает информацию о текущем принтере.
А это Form2->RichEdit1->Print("Печать"); я так подозреваю выводит содержимое едита на печать, причем пытается это делать без проверки, возможно ли это.
0
шарпопочитатель
58 / 25 / 7
Регистрация: 31.01.2010
Сообщений: 1,031
03.05.2011, 15:50  [ТС] 15
возможно

Добавлено через 9 минут
ну че , будет в embarcoder письмо писать? Не работают исключения как надо товарищи.
0
3075 / 2396 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
03.05.2011, 15:54 16
Судя по картинке, исключение возникает в системной библиотеке. Причем эта библиотека - драйвер печати.
0
шарпопочитатель
58 / 25 / 7
Регистрация: 31.01.2010
Сообщений: 1,031
03.05.2011, 16:03  [ТС] 17
kazak, ну. Так как принтера нет. Драйвер есть.
Вместо него другой принтер. Что распечаталось надо открыть ПУСК- принтер и сделать его по умолчанию. Но я хочу проиграть именно эту ситацию и обработать это исключение. Ибо должно обработать.
0
3075 / 2396 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
03.05.2011, 16:12 18
Что бы обработать какое-либо исключение, это исключение должно сначала генерироваться. А RichEdit1->Print генерирует какие-нибудь исключения?
0
шарпопочитатель
58 / 25 / 7
Регистрация: 31.01.2010
Сообщений: 1,031
03.05.2011, 16:26  [ТС] 19
exception это не исключение что ли(см. картинку)?
А RichEdit1->Print генерирует какие-нибудь исключения?
yes.

Добавлено через 12 минут
надо писать письмо в embarcoder короче
0
3075 / 2396 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
03.05.2011, 17:08 20
Ексепшн на картинке произошел в другом модуле.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2011, 17:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Кроссдоменность - головная боль?
Здравствуйте уважаемые форумчане. Нужен совет, ну или помощь кому не лень. Трабла такая - пихаем...

Головная боль от экрана
Жутко замучилась с головной болью. На днях сгорела материнка на моем ноуте и я временно пересела на...

Головная боль по имени args
Позвольте "чайнику" поинтересоваться... Во всех книгах по Java которые смог найти включая "для...

Большая головная боль с Сёмерочкою...
Помогите плизз!!!!23 числа сего месяца на Винде 7 Макси произошло обновления(человек по незнанке...

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

Строки в них моя головная боль
Смотрите, по сколько я довольно таки туго думное и не умеющее грамотно излагать свои мысли существо...


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

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

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