шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035

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

03.05.2011, 14:14. Показов 3345. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.05.2011, 14:14
Ответы с готовыми решениями:

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

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

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

34
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
03.05.2011, 18:59  [ТС]
Студворк — интернет-сервис помощи студентам
и поэтому он не обработается в том модуле из которого был вызван?
0
 Аватар для kazak
3605 / 2745 / 356
Регистрация: 11.03.2009
Сообщений: 6,313
04.05.2011, 12:38
Нет, скорее всего исключение никто не вызывает.
0
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
04.05.2011, 12:41  [ТС]
а че , как так тогда? откуда столько месаг о памяти.
0
 Аватар для kazak
3605 / 2745 / 356
Регистрация: 11.03.2009
Сообщений: 6,313
04.05.2011, 14:02
А как же ж
Цитата Сообщение от ht1515 Посмотреть сообщение
Кстати там есть(картинку с исключением посмотрите) Ignore it excepton type.
Я её нажал, теперь просто тупо мессаги вылетают в бесконечном количестве.
0
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
04.05.2011, 14:08  [ТС]
то есть эти мессаги генерируются ОС которая как-то неправильно чето херачит из dll к которому я обращаюсь из программы на билдере?
0
 Аватар для kazak
3605 / 2745 / 356
Регистрация: 11.03.2009
Сообщений: 6,313
04.05.2011, 14:54
В общих чертах как-то так.
0
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
04.05.2011, 14:58  [ТС]
в дебагере стек посмотреть может? вызовы какие нить...
0
 Аватар для kazak
3605 / 2745 / 356
Регистрация: 11.03.2009
Сообщений: 6,313
04.05.2011, 15:04
Если так хочется, хотя может лучше почитать мануалы про метод Print, может всеже он требует каких то проверок доступности принтера перед своим вызовом.
0
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
04.05.2011, 15:16  [ТС]
kazak, вчера архангельского читал. Про печать ваще скудно че написал.
Про проверку ничего не писал. Смысл в том что нужно юзать fastreport или rave.
Или класс Tprinter вроде и через канву все херачить там.

Добавлено через 7 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
procedure TCustomRichEdit.Print(const Caption: string);
var
  Range: TFormatRange;
  LastChar, MaxLen, LogX, LogY, OldMap: Integer;
  SaveRect: TRect;
  TextLen: TGetTextLengthEx;
{$IF DEFINED(CLR)}
  Buffer: IntPtr;
{$IFEND}
begin
{$IF NOT DEFINED(CLR)}
  FillChar(Range, SizeOf(TFormatRange), 0);
{$IFEND}
  with Printer, Range do
  begin
    Title := Caption;
    BeginDoc;
    hdc := Handle;
    hdcTarget := hdc;
    LogX := GetDeviceCaps(Handle, LOGPIXELSX);
    LogY := GetDeviceCaps(Handle, LOGPIXELSY);
    if IsRectEmpty(PageRect) then
    begin
      rc.right := PageWidth * 1440 div LogX;
      rc.bottom := PageHeight * 1440 div LogY;
    end
    else begin
      rc.left := PageRect.Left * 1440 div LogX;
      rc.top := PageRect.Top * 1440 div LogY;
      rc.right := PageRect.Right * 1440 div LogX;
      rc.bottom := PageRect.Bottom * 1440 div LogY;
    end;
    rcPage := rc;
    SaveRect := rc;
    LastChar := 0;
 
    // retrieve number of characters in rich edit control
    TextLen.Flags := GTL_NUMCHARS;
{$IF DEFINED(CLR)}
    if Marshal.SystemDefaultCharSize = 1 then
      TextLen.CodePage := CP_ACP // Active ANSI code page
    else
      TextLen.CodePage := 1200;  // Unicode
    Buffer := Marshal.AllocHGlobal(Marshal.SizeOf(TypeOf(TGetTextLengthEx)));
    try
      Marshal.StructureToPtr(TObject(TextLen), Buffer, False);
      MaxLen := SendMessage(Self.Handle, EM_GETTEXTLENGTHEX, LPARAM(Buffer), 0);
    finally
      Marshal.FreeHGlobal(Buffer);
    end;
{$ELSE}
    TextLen.CodePage := 1200;  // Unicode
    MaxLen := SendMessage(Self.Handle, EM_GETTEXTLENGTHEX, LPARAM(@TextLen), 0);
{$IFEND}
 
    chrg.cpMax := -1;
    // ensure printer DC is in text map mode
    OldMap := SetMapMode(hdc, MM_TEXT);
    SendMessage(Self.Handle, EM_FORMATRANGE, 0, 0);    // flush buffer
    try
      repeat
        rc := SaveRect;
        chrg.cpMin := LastChar;
        LastChar := SendStructMessage(Self.Handle, EM_FORMATRANGE, 1, Range);
        if (LastChar < MaxLen) and (LastChar <> -1) then
          NewPage;
      until (LastChar >= MaxLen) or (LastChar = -1);
      EndDoc;
    finally
      SendMessage(Self.Handle, EM_FORMATRANGE, 0, 0);  // flush buffer
      SetMapMode(hdc, OldMap);       // restore previous map mode
    end;
  end;
end;
по сути в модуле ComCtrls эта функция вызывается когда делаю рич->принт.

а на этой строке видать сбой
Delphi
1
LastChar := SendStructMessage(Self.Handle, EM_FORMATRANGE, 1, Range);
дальше нее не идет.
http://docwiki.embarcadero.com... uctMessage
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
04.05.2011, 15:25
скомпили программу в релизе и запусти екзешник
0
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
04.05.2011, 15:26  [ТС]
скомпили программу в релизе и запусти екзешник
об этом уже вроде говорили.
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
04.05.2011, 15:33
если не поможет, проверь тоже но на шестом билдере

Добавлено через 1 минуту
Цитата Сообщение от ht1515 Посмотреть сообщение
об этом уже вроде говорили.
значит я пропустил
0
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
04.05.2011, 15:36  [ТС]
проверил на 6. Так же.
Короче да. Походу просто билдер так не умеет. Может это и правильно в принципе. Типо код неуправляемый же.
0
 Аватар для kazak
3605 / 2745 / 356
Регистрация: 11.03.2009
Сообщений: 6,313
04.05.2011, 15:42
Как вариант можно попробовать на другом компе, с другим принтером.
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
04.05.2011, 17:24
в билдер принцыпе перехватывает исключение, и только исключение (тоисть то что было вазвано throw), а то что выскакивает у тебя это ошибка переполнения/доступа памяти которую отлавливает сама винда и выдает сообщение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2011, 17:24

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

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

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

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

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


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

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

Новые блоги и статьи
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru