Canvas does not allow drawing как исправить

На даный момент установлена версия Бата 3.71.04 Prof на операционке WinXPPro Ru SP2При просмотре html-письма которое содержит много анимированых gif'ов вылетает множество сообщений об ошибке Canvas does not allow drawing и Бат зависает.Помогает длительное нажатие ALT+F4(Я типа быстрее закрываю окна чем они открываются) чтоб нормально закрыть Бат не снимая процесса.Раньше наблюдал такое на Бате версии 2.00.6 так и не решил проблему.Помогите разобратся, чем такое лечить?

В чем вопрос-то? Куда нажать, чтобы увидеть? На свежей альфе? Знаете-ка что…. Этой ошибке ТРИСТА ЛЕТ! Посмотрите на дату исходного сообщения — март 2006 года.

Никуда не нажать. Эта ошибка возникает сама по себе и непредсказуемо. И чем дальше бат деградирует (с увеличением номера версии) — тем чаще.

Я ж сказал — на форумах по дельфи про такую проблему знают, знают про ее причины и знают, что надо делать, чтобы она не возникала. И всяких новичков терпеливо учат, как надо программировать многопоточные приложения.

Также, когда я искал информацию об этой ошибке, я видел много релизов РАЗНЫХ программ, в описании к которым было указано, что в этой версии «исправлена ошибка, приводящая к Canvas does not allow drawing и к Acsess violation at address».

Отрицать очевидное бессмысленно — ошибка в Бате есть, и причина ее — корявое программирование, рассинхронизация процессов, утечки памяти.

Беда в том, что эту ошибку в Бате уже НИКОГДА не исправить!!! Слишком все запущено. Я представляю, сколько кода надо перелопатить. А код уже давно такой, что в одном месте тронешь — в трех других сразу рассыпается.

kessor

4 / 4 / 2

Регистрация: 27.10.2014

Сообщений: 90

1

15.02.2016, 13:09. Показов 8932. Ответов 6

Метки нет (Все метки)


после N запусков вот этой функции

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function GetGPixelColor(X, Y: Integer): BYTE;
var
 c: TCanvas;
Col: TColor;
begin
c := TCanvas.Create;
  try
    c.Handle := GetWindowDC(GetDesktopWindow);
    Col   := GetPixel(c.Handle, X, Y);
    Result := GetGValue(Col);
  finally
    c.Free;
  end;
end;

программа вылетает с ошибкой canvas does not allow drawing
как исправить?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Пишу на Delphi…иногда

1422 / 1277 / 286

Регистрация: 03.12.2012

Сообщений: 3,914

Записей в блоге: 5

15.02.2016, 13:25

2

Цитата
Сообщение от kessor
Посмотреть сообщение

как исправить?

GetWindowDC

After painting is complete, the ReleaseDC function must be called to release the device context. Not releasing the window device context has serious effects on painting requested by applications.



0



kessor

4 / 4 / 2

Регистрация: 27.10.2014

Сообщений: 90

15.02.2016, 14:06

 [ТС]

3

то есть просто добавить строчку

Pascal
1
ReleaseDC(GetDesktopWindow,GetWindowDC(GetDesktopWindow));

?



0



587 / 454 / 147

Регистрация: 09.12.2013

Сообщений: 2,385

Записей в блоге: 2

15.02.2016, 16:20

4

Зачем вообще TCanvas? Просто HDC возьмите. И да, освобождать надо.

Цитата
Сообщение от kessor
Посмотреть сообщение

canvas does not allow drawing

Это логически не может быть из-за показанного кода. Вы там ничего не рисуете. В другом месте наверное что-то делается.

Добавлено через 22 секунды
Почему все так любят GetDesktopWindow? Ноль там должен быть, ноль.



0



kessor

4 / 4 / 2

Регистрация: 27.10.2014

Сообщений: 90

15.02.2016, 17:27

 [ТС]

5

а так можно цвет пикселя получать?

Pascal
1
2
3
4
5
6
7
function GetGPixelColor(X, Y: Integer): BYTE;
var
Col: TColor;
begin
Col   := GetPixel(GetDC(0), X, Y);
Result := GetGValue(Col);
end;



0



BOGG ART

587 / 454 / 147

Регистрация: 09.12.2013

Сообщений: 2,385

Записей в блоге: 2

15.02.2016, 18:40

6

Лучший ответ Сообщение было отмечено kessor как решение

Решение

Я же говорю — возьмите переменную HDC, освобождайте.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function GetPixelColor(X, Y: Integer): TColor;
var DC: HDC;
begin
DC:=GetDC(0); // !!!
Result:=GetPixel(DC, X, Y);
ReleaseDC(0, DC); // !!!
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
var Col: TColor;
begin
with Mouse.CursorPos do
      Col:=GetPixelColor(X, Y);
Color:=GetGValue(Col);
end;



1



4 / 4 / 2

Регистрация: 27.10.2014

Сообщений: 90

18.02.2016, 17:03

 [ТС]

7

после ~100 итераций начинает выдавать всегда одно и то же значение(для G — 255)
помогает перезапуск проги
как исправить?



0





Сообщ.
#1

,
22.10.10, 12:15

    Здравствуйте!
    Тема, наверное, WinAPI-шная, но вызовы идут из программы на Билдере — потому тут и пишу.
    Пока моя рисовалка работала с одной картой, проблем не было. А сейчас рухает с сообщением

    ExpandedWrap disabled

      void __fastcall TFMain::AppException(TObject *Sender, Exception *E) {

        Screen->Cursor = crDefault;

        if (onSxfLoad) {

          sprintf(buf, «Файл %srnОшибка на объекте %d:%d:», OpenDialog1->FileName, sxfItem->api->MapObj->code, sxfItem->api->MapObj->num);

          switch (sxfItem->api->MapObj->local) {

            case  0 : strcat(buf, «LIN»); break;

            case  1 : strcat(buf, «SQR»); break;

            case  2 : strcat(buf, «DOT»); break;

            case  3 : strcat(buf, «TXT»); break;

            case  4 : strcat(buf, «VEC»); break;

            case  5 : strcat(buf, «MIX»); break;

            default : strcat(buf, «UFO»); break;

          }

          strcat(buf, «rn»);

          strcat(buf, E->Message.c_str());

          Application->MessageBox(buf, «Ошибка чтения файла», MB_ICONWARNING);

        }

        else {

          ShowMessage(E->Message.c_str());  // вот сюда попадаю

          Application->Terminate();

      } }

    Рухает после загрузки примерно 20 карт в OnPaint пейнтбокса, на который выводится БМП:

    ExpandedWrap disabled

      void __fastcall TFMain::PBPaint(TObject *Sender) {

        PB->Canvas->Draw(0, 0, bmp);

      }

    Куда рыть? Проверить, всем ли SelectObject() есть соответствующие DeleteObject()? Или тут что-то другое? :(


    popsa



    Сообщ.
    #2

    ,
    22.10.10, 12:40

      поток я так понимаю у тебя один, поэтому скорее всего что то из этого ;)

      Цитата

      Question:
      What does the error message ‘Canvas does not allow drawing’ mean?
      Answer:
      you may have run out of resources, which means a new DC cannot be allocated. Usually this is a result of not freeing unused DCs or other objects.
      you are attempting to draw to an device context that is not yet valid. Such as in the create constructor of a component.
      you are trying to draw on a canvas while your last draw-operation has not finished yet. In this case you can use Canvas.Lock() or Canvas.TryLock() to fix it.

      Сообщение отредактировано: popsa — 22.10.10, 12:43


      leo



      Сообщ.
      #3

      ,
      22.10.10, 16:54

        Цитата #SI# @ 22.10.10, 12:15

        Проверить, всем ли SelectObject() есть соответствующие DeleteObject()?

        Интересно, а зачем вообще их понадобилось юзать. Чем VCL-ные обертки не устраивают, или хочется создать «гремучую смесь» VCL и API ?! :)


        #SI#



        Сообщ.
        #4

        ,
        22.10.10, 17:48

          leo, научи, как висюльками нарисовать PolyPolygon() и выполнить TransparentBlt(). Ну шо те стоит, а? :)
          Да, и заодно как такое пёрышко создать?
          user posted image

          По сабжу — поотключал часть функций рисовалки, загрузил 61 карту сотки на Московскую область. Полёт нормальный. Это говорит о том, шо где-то в отключенных функциях порылась собака.

          Сообщение отредактировано: #SI# — 22.10.10, 17:54


          leo



          Сообщ.
          #5

          ,
          23.10.10, 08:51

            Цитата #SI# @ 22.10.10, 17:48

            Да, и заодно как такое пёрышко создать?

            Не понятно, чем ты вообще занимаешься — хочешь слепить свою самоделку лучше или дешевле, чем Панорама ГИС-вьюер ?! ;)


            #SI#



            Сообщ.
            #6

            ,
            23.10.10, 11:11

              leo, ты по делу можешь ответить? Если нет — то не парься, ага? А с поделками этой конторы я знаком не понаслышке… :whistle:

              По сабжу — нашёл пяток косяков, исправил. Но вывод полигонов всё равно глючит. Тот же глюк, шо и в вышеупомянутой Панораме — только там EAV не обрабатывается и писюк не поднимается даже тремя пальцами. Вот пример вывода:

              ExpandedWrap disabled

                  switch (obj->code) {

                    //…..

                    case 71323000 : pen = ::CreatePen(PS_SOLID, 1, clBlack);

                                    logBrush.lbStyle = BS_HATCHED;

                                    logBrush.lbColor = clBlack;

                                    logBrush.lbHatch = HS_CROSS;

                                    brush = ::CreateBrushIndirect(&logBrush);

                                    DrawPolygon(hdc, points, pointCount, metricCount, pen, brush);

                                    return;

                    //————————————————————————

                    case 71610000 : pen = ::CreatePen(PS_DASH, 1, clBlack);

                                    brush = ::CreateSolidBrush(clWhite);

                                    DrawPolygon(hdc, points, pointCount, metricCount, pen, brush);

                                    return;

                    //=======================================================================

                    default       : // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                                    pen = ::CreatePen(PS_SOLID, 1, clFuchsia);

                                    brush = ::CreateSolidBrush(clFuchsia);

                                    DrawPolygon(hdc, points, pointCount, metricCount, pen, brush);

                                    return;

                } }

              А вот вывод полигона:

              ExpandedWrap disabled

                void DrawPolygon(HDC dc, TPoint *pnts, int *pCount, int mCount, HPEN pen, HBRUSH brush) {

                  HPEN dcPen = ::SelectObject(dc, pen);

                  HBRUSH dcBrush = ::SelectObject(dc, brush);

                  ::PolyPolygon(dc, pnts, pCount, mCount);

                  ::SelectObject(dc, dcPen);

                  ::DeleteObject(pen);

                  ::SelectObject(dc, dcBrush);

                  ::DeleteObject(brush);

                }

              Причем когда искусственно устанавливаю коды в 0 и вывожу по дефолту — проблем нет! Такое впечатление, что глюк идёт из-за вызовов CreateBrushIndirect() :wall:
              Кстати, щяс в дефолт подставлю её и посмотрю что получится.

              ExpandedWrap disabled

                    default       :

                                    pen = ::CreatePen(PS_SOLID, 1, clFuchsia);

                //                    brush = ::CreateSolidBrush(clFuchsia);

                                    logBrush.lbStyle = BS_HATCHED;

                                    logBrush.lbColor = clBlack;

                                    logBrush.lbHatch = HS_CROSS;

                                    brush = ::CreateBrushIndirect(&logBrush);

                                    DrawPolygon(hdc, points, pointCount, metricCount, pen, brush);

                                    return;

              Всё ОК… Пошёл рыцца дальше…

              Всё ещё роюсь… Круг поиска сузился…
              ЗЫ — ещё одна Панорамная фенька — если работает тот же плейер, то в момент загрузки карты звук просто заикается. Очень смешно… :ph34r:

              Поймал хаду! Громко не ржать!

              ExpandedWrap disabled

                                      // плотнозастроенные

                                      case  1 : value = GetAtrValue(atrs, 243);

                                                switch (value) {

                                                  // крупный город

                                                  case 20 : brush = ::CreateSolidBrush(RGB(255, 148, 40)); // жёлтенькие

                                                            break;

                                                  // малый город, ПГТ

                                                  case 21 :

                                                  case 22 : brush = ::CreateSolidBrush(LTGRAY_BRUSH);

                                                            break;

                                                  // с/х и дачные посёлки

                                                  case 23 :

                                                  case 24 : brush = ::CreateSolidBrush(BLACK_BRUSH);

                                                            break;

                                                  // прочие НП

                                                  case 26 : brush = ::CreateSolidBrush(BLACK_BRUSH);

                                                            break;

                                                  // любые НП

                /* а кисти — нет */               case 28 : ::CreateSolidBrush(RGB(255, 148, 40)); // жёлтенькие

                                                            break;

                /* -*- */                         default : ::CreateSolidBrush(RGB(255, 0, 0));    // UFO

                                                }

                                                break;

              Всем спасибо за внимание!
              ЗЫ — этой баге года 2, не меньше. Пока работал с одной картой — всё сходило с рук…
              ЗЗЫ — Лео, ежели кинет тебя судьба и заставит писать на Панорамных MapAPI / GTK — спрашивай, не стесняйся. Чем смогу — помогу! :yes:

              Сообщение отредактировано: #SI# — 23.10.10, 16:11


              leo



              Сообщ.
              #7

              ,
              24.10.10, 07:45

                :offtop:

                Цитата #SI# @ 23.10.10, 11:11

                Лео, ежели кинет тебя судьба и заставит писать на Панорамных MapAPI / GTK — спрашивай, не стесняйся. Чем смогу — помогу!

                :lool: «Эт вряд ли»(С). «Не царское это дело» заниматься какими-то рисовалками, поэтому «помощников» мне и так хватает, и не они мне советуют что и как делать, а я им «с высоты птичьего полета», поскольку прежде чем грузить «61 карту сотки на Московскую область» нужно подумать — а нужно ли это вообще и можно ли решить эту задачу иначе ;)


                #SI#



                Сообщ.
                #8

                ,
                24.10.10, 09:13

                  Цитата leo @ 24.10.10, 07:45

                  а я им «с высоты птичьего полета»

                  Штаны не потеряй. Давай ты будешь своим делом заниматься, а я — своим. И помогать друг другу. А по части флудежа в тематике тебе всё равно за мной не угнацца. Не веришь — спроси тутошних модераторов. Они много чего могут вспомнить :tong:

                  Добавлено 24.10.10, 09:17

                  А вопрос таки решён. :D


                  leo



                  Сообщ.
                  #9

                  ,
                  25.10.10, 09:15

                    Цитата #SI# @ 24.10.10, 09:13

                    Давай ты будешь своим делом заниматься

                    Я своим и занимаюсь — пытаюсь обратить внимание на то, что, возможно, вы НЕ «верной дорогой идете, товарисч!» ;) В предыдущем топике ты пытался параллельно рисовать 4-5 карт в разных потоках — видимо есть какие-то проблемы с быстродействием. Теперь речь зашла об отрисовке 20-60 карт и возникли вопросы с нехваткой ресурсов. Хотя судя по этой картинке, уже при отображении 3-4 листов одновременно, разобрать что-либо на такой с позволения сказать «карте» практически невозможно — тут явно нужна генерализация. Поэтому если и юзать многопоточность, то не для того, чтобы параллельно рисовать «кашу» на экране, а создаватьобновлять прореженный списоксписки генерализованных объектов, которые следует отображать в мелких масштабах. И если кол-во одноврменно отображаемых объектов при разных мелких масштабах будет примерно одинаковым (или хотя бы будет отличаться раза в 2-3, а не в сотни раз), и ссылки на отображаемые объекты будут занесены в отдельный список (чтобы не искать их по всем картам при каждой перерисовке), то и основному потоку будет практически пофиг рисовать одну подробную карту или 60 мелких генерализованных. (Ну и ес-но одна мелкая схематическая карта-навигатор на весь район — штука весьма полезная).
                    Хотя ты, видимо, и сам все это знаешь, поэтому — «извиняйте за беспокойство, не смею больше тревожить» ;)


                    #SI#



                    Сообщ.
                    #10

                    ,
                    25.10.10, 09:36

                      Да простят меня модеры за забивание форума картинками…
                      user posted image

                      user posted image

                      user posted image

                      user posted image

                      Мил человек, не рассказывай мне, как делаются ГИСы. Я этим занимался ещё тогда, когда ты штаны мочил… Ничего личного. Ага. Не надо считать собеседников дебилами.

                      По сабжу — я действительно не работал с потоками для такого конкретного случая. Таки, положа руку на сердце, от тебя ничего, окромя высокозаумного мычания, я не услышал.


                      ЗЫ — таки багу я нашёл. Исправил. Отписал тут чуть выше. Искренне желаю ребятам, которые в глаза излучают тебе улыбки, а за глаза … не попадать в такие ситуации. :yes:

                      Добавлено 25.10.10, 10:18
                      Таки для поклонников поделок КБ Панорама (сорри за качество, но клаву она при ошибке блокирует, снимал мобилкой):
                      user posted image

                      user posted image

                      Вопрос к МАСТЕРАМ уровня Адиля/Тренера (в алфавитном порядке :) ) — чем так можно засрать память, что система просто не реагирует?

                      Сообщение отредактировано: #SI# — 25.10.10, 10:20

                      Hi, whenever I try to use my application on a client’s computer I get the error message «Canvas Does not Allow Drawing.» This happens only when I try to print a Report using fastreport 3. I use InstallShield and have included all fastreport libraries.

                      Any suggestions would be greatly appreciated.

                      Comments

                      • Hi, whenever I try to use my application on a client’s computer I get the error message «Canvas Does not Allow Drawing.» This happens only when I try to print a Report using fastreport 3. I use InstallShield and have included all fastreport libraries.

                        Any suggestions would be greatly appreciated.

                        I know this is VERY old post, but thought I would just advise as it is the only valid page on the subject when doing a search on Google. It seems that your c: drive needs to have a temp folder, in order for the canvas to be drawn, there must be read&write permissions on the folder too.

                      • Hi, whenever I try to use my application on a client’s computer I get the error message «Canvas Does not Allow Drawing.» This happens only when I try to print a Report using fastreport 3. I use InstallShield and have included all fastreport libraries.

                        Any suggestions would be greatly appreciated.

                        I know this is VERY old post, but thought I would just advise as it is the only valid page on the subject when doing a search on Google. It seems that your c: drive needs to have a temp folder, in order for the canvas to be drawn, there must be read&write permissions on the folder too.

                        This is VERY old post, but still actual. It is important to have some default printer on your system — but NOT Fax!

                      • This is a very old post but have helped me lot.
                        The only thing I needed to do was to run RAD Studio XE2 as Administrator.
                        All fixed!

                        Thank you

                      • this post is helping confused computer users since 2006!
                        long live the post !

                      • The post is not dead! Long live the post!

                      Leave a Comment

                      Форум РадиоКот • Просмотр темы — Ошибка при рисовании на канве, Delphi

                      Сообщения без ответов | Активные темы

                      ПРЯМО СЕЙЧАС:

                      Автор Сообщение

                      Не в сети

                      Заголовок сообщения: Ошибка при рисовании на канве, Delphi

                      СообщениеДобавлено: Ср янв 10, 2018 20:05:03 

                      Нашел транзистор. Понюхал.
                      Аватар пользователя

                      Зарегистрирован: Пн сен 05, 2011 10:03:06
                      Сообщений: 160
                      Откуда: Тула

                      Рейтинг сообщения: 0

                      Сразу скажу, с графикой раньше вообще не работал.
                      В моей программе используется несколько потоков(нитей). Один поток берет данные с переходника USB-COM в реальном времени, другой их обрабатывает, третий по результатам обработки рисует графику. Рисование, естественно, идет непрерывно.
                      Все рисуется хорошо, но если потащить мышкой работающее окно, вылетает ошибка «Canvas does not allow draving». Происходит это на операции Canvas.CopyRect. Понимаю что причина где то в рисовании разными потоками на одну канву.
                      Какие способы устранения посоветуют мне более опытные программеры?


                      _________________
                      Если бы на станции «Мир» стояли Винды, она бы еще висела и висела…

                      Вернуться наверх
                       

                      ПрофильПрофиль

                       

                      Реклама

                      Мурик

                      Не в сети

                      Заголовок сообщения: Re: Ошибка при рисовании на канве, Delphi

                      СообщениеДобавлено: Ср янв 10, 2018 23:27:35 

                      Друг Кота
                      Аватар пользователя

                      Карма: 1

                      Рейтинг сообщений: 157

                      Зарегистрирован: Пн окт 11, 2010 19:00:08
                      Сообщений: 3313

                      Рейтинг сообщения: 0

                      Рисовать нужно в одном потоке, желательно основном.

                      Вернуться наверх
                      Реклама

                      paskal

                      Не в сети

                      Заголовок сообщения: Re: Ошибка при рисовании на канве, Delphi

                      СообщениеДобавлено: Ср янв 10, 2018 23:43:41 

                      Нашел транзистор. Понюхал.
                      Аватар пользователя

                      Зарегистрирован: Пн сен 05, 2011 10:03:06
                      Сообщений: 160
                      Откуда: Тула

                      Рейтинг сообщения: 0

                      Особенность программы такова, что процесс рисования идет в реальном времени непрерывно. Если я сделаю графику в основном потоке, программа повиснет.
                      А всё рисование идет в одном потоке. В других потоках не связанная с графикой обработка.


                      _________________
                      Если бы на станции «Мир» стояли Винды, она бы еще висела и висела…

                      Вернуться наверх

                      ДанилКоржов

                      Не в сети

                      Заголовок сообщения: Re: Ошибка при рисовании на канве, Delphi

                      СообщениеДобавлено: Ср янв 17, 2018 18:48:16 

                      Зарегистрирован: Вт янв 16, 2018 23:18:46
                      Сообщений: 3

                      Рейтинг сообщения: 0

                      Делема у вас, но выход должен же быть ….

                      Вернуться наверх
                      Реклама

                      Выгодные LED-драйверы для решения любых задач

                      КОМПЭЛ представляет со склада и под заказ широкий выбор LED-драйверов производства MEAN WELL, MOSO, Snappy, Inventronics, EagleRise. Линейки LED-драйверов этих компаний, выполненные по технологии Tunable White и имеющие возможность непосредственного встраивания в систему умного дома (димминг по шине KNX), перекрывают практически полный спектр применений: от простых световых указателей и декоративной подсветки до диммируемых по различным протоколам светильников внутреннего и наружного освещения.

                      Подобрать LED-драйвер>>

                      SIM31

                      Не в сети

                      Заголовок сообщения: Re: Ошибка при рисовании на канве, Delphi

                      СообщениеДобавлено: Чт фев 15, 2018 17:29:33 

                      Это не хвост, это антенна
                      Аватар пользователя

                      Карма: 17

                      Рейтинг сообщений: 12

                      Зарегистрирован: Чт апр 04, 2013 22:22:57
                      Сообщений: 1345
                      Откуда: Белгород, РФ

                      Рейтинг сообщения: 0

                      Я кидал на форму таймер, и внутри вызова таймера рисовал анимацию, работает превосходно, можно каждые 16 мс экран перерисовывать.

                      Вернуться наверх
                      Реклама

                      Реклама

                      LIMF – источники питания High-End от MORNSUN со стандартным функционалом на DIN-рейку

                      На склад Компэл поступили ИП MORNSUN (крепление на DIN-рейку) с выходной мощностью 240 и 480 Вт. Данные источники питания обладают 150% перегрузочной способностью, активной схемой коррекции коэффициента мощности (ККМ; PFC), наличием сухого контакта реле для контроля работоспособности (DC OK) и возможностью подстройки выходного напряжения. Источники питания выполнены в металлическом корпусе, ПП с компонентами покрыта лаком с двух сторон, что делает ее устойчивой к соляному туману и пыли. Изделия соответствуют требованиям ANSI/ISA 71.04-2013 G3 на устойчивость к коррозии, а также нормам ATEX для взрывоопасных зон.

                      Подробнее>>

                      Кто сейчас на форуме

                      Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

                      Вы не можете начинать темы
                      Вы не можете отвечать на сообщения
                      Вы не можете редактировать свои сообщения
                      Вы не можете удалять свои сообщения
                      Вы не можете добавлять вложения

                      Понравилась статья? Поделить с друзьями:
                    • Cant load library engine dll как исправить
                    • Cant get list http error scehttpsendrequest failed 0x80436007
                    • Cant find project or library макрос ошибка excel
                    • Cant create window как исправить
                    • Cant complete world script module dayz ошибка как исправить