В gdi возникла ошибка общего вида mathcad

41 / 27 / 6

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

Сообщений: 134

1

28.01.2014, 21:00. Показов 2512. Ответов 5


Студворк — интернет-сервис помощи студентам

Всем привет, столкнулся с проблемой:
1. Вынужден писать чудовищно длинные формулы длиной 120-150 страниц примерно
2. Расчеты выполняются нормально
3. НО!!! при сохранении маткадовского файла вылазит ошибка

«В GDI возникла ошибка общего вида»

4. суть формулы — приравнивание нулю большого количества громоздких слагаемых,
причем чем сложнее слагаемые тем меньше их можно впихнуть в файл пока не выскочит эта ошибка,
как-будто ограничение связано с длиной (в страницах) формулы

Кто-то сталкивался? подскажите плиз как решается проблема

PS сократить формулу не получается изза ограничений конструкции Find и Minerr



0



Эксперт по математике/физике

1501 / 1022 / 159

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

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

29.01.2014, 09:40

2

1. В какой версии Mathcad вы работаете?
2. Прикрепите файл Mathcad для тестирования.



0



41 / 27 / 6

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

Сообщений: 134

29.01.2014, 12:15

 [ТС]

3

1. Mathcad 15.0
2. сбойный файл прицепить не могу ибо в этом и проблема, что ошибка мешает сохранить созданное,
но прицепил файл в одном шаге от ошибки:
в первой строке — сама формула из 30 слагаемых
во второй строке — само слагаемое, если его вставить в пустой местозаполнитель в конце первой строки
то появится эта ошибка GDI.



0



Эксперт по математике/физике

1501 / 1022 / 159

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

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

29.01.2014, 15:53

4

Воспроизвел ошибку в самом последнем релизе Mathcad 15 M030. Но в Mathcad Prime 3.0 F000 файл нормально сохраняется со вставленным слагаемым. Сконвертированный файл для Mathcad Prime 3.0 можно найти во вложении к сообщению.

Миниатюры

не сохраняются очень длинные формулы - "В GDI возникла ошибка общего вида"
 



1



41 / 27 / 6

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

Сообщений: 134

30.01.2014, 10:40

 [ТС]

5

Попробую только завтра, надеюсь заработает!
Vladimir__, спасибо что потратил время!!

Добавлено через 18 часов 17 минут
Заработало блин))) осталось с выводом разобраться, матрица результатов копипастица в блокнот/ексель в виде строки а не таблицы

А это что за прайм? пользоваться(создавать с нуля расчет) невозможно, абсолютно все по-другому,
это какаято параллельная ветка развития или революционная последняя версия??
все последующие версии в таком же виде будут выходить и надо начинать привыкать через силу к такому виду?



0



Посмотрел предыдущие обсуждения темы «В GDI+ возникла ошибка общего вида». Не нашёл решения своего вопроса. Заранее благодарю за уделённое внимание.

Работаю в WINDOWS 7, Microsoft Visual Studio 2008.
Столкнулся с тем, что сохранение изображения в
Stream
работает не для всех картинок. Вот фрагмент кода:

public
Image
Изображение;

public
void
Записать(
Stream
поток ) {

  
Изображение.
Save( поток,
System.Drawing.Imaging.ImageFormat.Png
);

  
}

При выполнении сохранения некоторых картинок и возникает ошибка. Появление ошибки не зависит от размера картинки и от выбранного формата. Сами картинки я открывал и сохранял в другом формате в
Paint. Не помогает. Зато, помогает клавиша
PrtScr
. Тем же Paint
вырезаю картинку и сохраняю, и всё работает. Но, с большой картинкой (больше экрана) этот номер не проходит.

Помогите, кто знает как обойти эту неприятность. Спасибо!

Такая ошибка может возникнуть в том случае, если пытаться сохранять в уже открытый файл. То есть ресурс «Test2.jpg» ранее был открыт и не освобождён.

Так что ищите в своём коде, где у вас ещё используется «Test2.jpg» (и не освобождается при этом).


У вас не используются Dispose/using. Покажу, как должен выглядеть правильный код. Заодно поправил нейминг.

static void Edit(string text)
{
    using (var image = Image.FromFile("Test.jpg"))
    using (var graphics = Graphics.FromImage(image))
    using (var font = new Font("Xenia Font", 15, FontStyle.Bold))
    using (var brush = new SolidBrush(Color.WhiteSmoke))
    using (var stringFormat = new StringFormat())
    {
        graphics.DrawString(
            text,
            font,
            brush,
            new RectangleF(0, 0, 0, 340),
            stringFormat
        );

        image.Save("Test2.jpg", ImageFormat.Jpeg);
    }
}

Вообще, stringFormat вполне можно убрать, т. к. ему не задаются параметры, отличные от дефолтных.

RectangleF не является disposable, поэтому его не нужно заключать в using.

Также неясно, зачем метод сделан статическим.


Форум программистов Vingrad

Модераторы: gambit, Partizan

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> Ошибка программы, В GDI+ возникла ошибка общего вида. 

:(

   

Опции темы

kokcu
Дата 31.5.2009, 23:28 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 69
Регистрация: 23.3.2009

Репутация: нет
Всего: нет

Здравствуйте, использую в программе следующую конструкцию:

Код

static public Bitmap trayimage = new Bitmap(32, 32);
        static public Image trayimagen = trayimage;
        static public Graphics g = Graphics.FromImage(trayimagen);
     ................

затем по таймеру раз в 1 сек.

Код

            g.FillRectangle(new SolidBrush(Color.LightBlue), new Rectangle(0, 0, 32, 32));
            if (speed < 100)
            {
                g.DrawString(speed.ToString(), new Font("Times New Roman", 22, FontStyle.Bold), new SolidBrush(Color.DarkRed), -4, 0);
            }
            if (speed >= 100)
            {
                g.DrawString(speed.ToString(), new Font("Verdana", 14), new SolidBrush(Color.DarkRed), -4, 0);
            }
            trayimage = new Bitmap(trayimagen);
            Icon icon = Icon.FromHandle(trayimage.GetHicon());
            notifyIcon1.Icon = icon;

Часа 2 программа работает нормально, но затем вываливает В GDI+ возникла ошибка общего вида. на 

Код

Icon icon = Icon.FromHandle(trayimage.GetHicon());

. Как это исправить?

Это сообщение отредактировал(а) kokcu — 31.5.2009, 23:30

PM MAIL   Вверх
KelTron
Дата 1.6.2009, 04:56 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 5
Всего: 38

Думаю, потому, что заканчиваются графические ресурсы, т.к. ты их не освобождаешь.
Их надо диспозить после использования, для этого достаточно создание объекта заклчить в блок using:

Код

using (Brush br = new SolidBrush(Color.LightBlue))
{
    g.FillRectangle(br, new Rectangle(0, 0, 32, 32));
}

if (speed < 100)
{
    using (Font fnt = new Font("Times New Roman", 22, FontStyle.Bold))
    using (Brush br = new SolidBrush(Color.DarkRed))
    {                
        g.DrawString(speed.ToString(), fnt, br, -4, 0);
    }
}
//...и т.д.

Это сообщение отредактировал(а) KelTron — 1.6.2009, 05:03

———————

Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну — преступник. Десять — смертник. Все — Бог.
Эвенгар Салладорский, основатель Школы Тьмы.

PM MAIL   Вверх
kokcu
Дата 1.6.2009, 09:06 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 69
Регистрация: 23.3.2009

Репутация: нет
Всего: нет

Спасибо, помогло!

PM MAIL   Вверх
kokcu
Дата 1.6.2009, 10:02 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 69
Регистрация: 23.3.2009

Репутация: нет
Всего: нет

Нет, поторопился.
Ошибка опять выскакивает.

PM MAIL   Вверх
diadiavova
Дата 1.6.2009, 12:17 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****

Профиль
Группа: Модератор
Сообщений: 5820
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 16
Всего: 142

kokcu, старый Bitmap тоже надо диспозить перед тем, как создаёшь новый(ели он больше не нужен ессно).

Код

            if(trayimage != null) trayimage.Dispose();
            trayimage = new Bitmap(trayimagen);

———————

Хочешь получить мудрый совет — читай подписи участников форумов.
Злой доктор Щасзаболит smile

PM   Вверх
kokcu
Дата 1.6.2009, 14:59 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 69
Регистрация: 23.3.2009

Репутация: нет
Всего: нет

Спасибо, сейчас попробую

PM MAIL   Вверх
kokcu
Дата 1.6.2009, 16:03 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 69
Регистрация: 23.3.2009

Репутация: нет
Всего: нет

 

smile  Опять.
Вот код таймера

Код

private void timer1_Tick(object sender, EventArgs e)
        {

                           kbytes_k = kbytes - result_n;
            lb = kbytes_k.ToString();

            label1.Text = speed.ToString()+" кб\с";
            if (lb.Length < 4) { noti = lb + " кб"; label4.Text = noti; }
            if (lb.Length > 3) 
            {
                hh = Convert.ToInt64(kbytes_k) / 1024;
                uu = Convert.ToInt64(kbytes_k) % 1024;
                noti = hh.ToString()+" м "+uu.ToString()+" кб";
                label4.Text = noti;
            }

                        notifyIcon1.Text = "Скачано всего: " + noti;
            using (Brush br = new SolidBrush(Color.LightBlue))
            {
                g.FillRectangle(br, new Rectangle(0, 0, 32, 32));
            }
            if (speed < 100)
            {
                using (Font fnt = new Font("Times New Roman", 22, FontStyle.Bold))
                using (Brush br = new SolidBrush(Color.DarkRed))
                {
                    g.DrawString(speed.ToString(), fnt, br, -4, 0);
                }
            }
            if (speed >= 100)
            {
                using (Font fnte = new Font("Verdana", 14))
                using (Brush bre = new SolidBrush(Color.DarkRed))
                {
                    g.DrawString(speed.ToString(), fnte, bre, -4, 0);
                }
            }

                        trayimage = new Bitmap(trayimagen);

                        Icon icon = Icon.FromHandle(trayimage.GetHicon());
            notifyIcon1.Icon = icon;
            trayimage.Dispose();

                  }

PM MAIL   Вверх
kokcu
Дата 5.6.2009, 19:27 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 69
Регистрация: 23.3.2009

Репутация: нет
Всего: нет

Ап ( проблема так и не решилась. Перепробовал все что можно

PM MAIL   Вверх
DVariuS
Дата 6.6.2009, 11:04 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 200
Регистрация: 10.2.2009
Где: Ukraine

Репутация: нет
Всего: 8

kokcu, скорее всего проблема в этом коде:

Код

Icon icon = Icon.FromHandle(trayimage.GetHicon());

Инфа из MSDN:

Цитата
When using this method you must dispose of the resulting icon using the DestroyIcon method in the Win32 API to ensure the resources are released.

Icon.FromHandle Method

PM MAIL   Вверх
kokcu
Дата 6.6.2009, 21:28 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 69
Регистрация: 23.3.2009

Репутация: нет
Всего: нет

Код

private void timer1_Tick(object sender, EventArgs e)
        {

                           kbytes_k = kbytes - result_n;
            lb = kbytes_k.ToString();

            label1.Text = speed.ToString()+" кб\с";
            if (lb.Length < 4) { noti = lb + " кб"; label4.Text = noti; }
            if (lb.Length > 3) 
            {
                hh = Convert.ToInt64(kbytes_k) / 1024;
                uu = Convert.ToInt64(kbytes_k) % 1024;
                noti = hh.ToString()+" м "+uu.ToString()+" кб";
                label4.Text = noti;
            }

                        notifyIcon1.Text = "Скачано всего: " + noti;
            using (Brush br = new SolidBrush(Color.LightBlue))
            {
                g.FillRectangle(br, new Rectangle(0, 0, 32, 32));
            }
            if (speed < 100)
            {
                using (Font fnt = new Font("Times New Roman", 22, FontStyle.Bold))
                using (Brush br = new SolidBrush(Color.DarkRed))
                {
                    g.DrawString(speed.ToString(), fnt, br, -4, 0);
                }
            }
            if (speed >= 100)
            {
                using (Font fnte = new Font("Verdana", 14))
                using (Brush bre = new SolidBrush(Color.DarkRed))
                {
                    g.DrawString(speed.ToString(), fnte, bre, -4, 0);
                }
            }

                        trayimage = new Bitmap(trayimagen);

                        icon = Icon.FromHandle(trayimage.GetHicon());
            notifyIcon1.Icon = icon;
            trayimage.Dispose();
            icon.Dispose();
            Icon.Dispose();

                                }

=
Все так же smile. Я скоро сума сойду с этой ошибкой

PM MAIL   Вверх
DVariuS
Дата 6.6.2009, 21:55 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 200
Регистрация: 10.2.2009
Где: Ukraine

Репутация: нет
Всего: 8

kokcu, что-то мне кажется, что кто-то не прочитал статью из MSDN по моей ссылке.

Код

 [System.Runtime.InteropServices.DllImport("user32.dll", CharSet=CharSet.Auto)]
    extern static bool DestroyIcon(IntPtr handle);

   private void GetHicon_Example(PaintEventArgs e)
    {

                         // Create a Bitmap object from an image file.
        Bitmap myBitmap = new Bitmap(@"c:FakePhoto.jpg");

                         // Draw myBitmap to the screen.
        e.Graphics.DrawImage(myBitmap, 0, 0);

                         // Get an Hicon for myBitmap.
        IntPtr Hicon = myBitmap.GetHicon();

        // Create a new icon from the handle. 
    Icon newIcon = Icon.FromHandle(Hicon);

                      // Set the form Icon attribute to the new icon.
        this.Icon = newIcon;

                // Destroy the Icon, since the form creates
    // its own copy of the icon.
        DestroyIcon(newIcon.Handle);

        }

Это сообщение отредактировал(а) DVariuS — 6.6.2009, 21:56

PM MAIL   Вверх



















Ответ в темуСоздание новой темы
Создание опроса
Прежде чем создать тему, посмотрите сюда:

mr.DUDA

THandle

  • Что же такое .NET? Краткое описание, изучаем.
  • Какой язык программирования выбрать? выбираем.
  • C#. С чего начать? начинаем.
  • Защита исходного кода .NET приложений, защищаем.
  • Литература по .NET, обращаемся.

  • FAQ раздела, ищем здесь.
  • Архиполезные ссылки: www.connectionstrings.com, www.pinvoke.net, www.codeproject.com

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс «транслит» если у Вас нет русских шрифтов.

Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)?
Пишите сюда, или отправляйте репорт. Поставим :)

Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »

E=mc2

Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

В GDI+ возникла ошибка общего вида

HES 7.0.44

Код: Выделить всё

function fingerPrint()
{
    global $td;
    $fingerprint = false;

    if ($td->is_exist_by_attribute("class", "tbody-td", false)) {
        $getd = $td->get_all_numbers_by_attribute("class", "tbody-td", false);
        if ($getd != false) {
            $fingerprint = $td->get_inner_text_by_number($getd[0]);
        }
    }
    return $fingerprint;
}

// проверка загрузки страницы 
function loadControlFingerprint($alte_fingerprint)
{
    $n = 0;
    while ($alte_fingerprint == fingerPrint()) {
        $n++;
        sleep(1);
        if ($n == 10 or $alte_fingerprint == false) {
            fehlerMeldung(" fingerprint error s.714");
            break;
        }
    }
return fingerPrint();
}

В протокол вошла запись «fingerprint error s.714», а программа зависла с сообщением «В GDI+ возникла ошибка общего вида».
Чья вина?


Аватара пользователя

bigfozzy

Site Admin
Сообщения: 3035
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: В GDI+ возникла ошибка общего вида

Сообщение

bigfozzy » 15 фев 2020, 09:46

а на каком урле вы это запускаете ?



Аватара пользователя

bigfozzy

Site Admin
Сообщения: 3035
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: В GDI+ возникла ошибка общего вида

Сообщение

bigfozzy » 23 фев 2020, 12:59

А напишите — как это повторить, это мы не знаем даже как начать его решать ?


E=mc2

Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: В GDI+ возникла ошибка общего вида

Сообщение

E=mc2 » 24 фев 2020, 12:57

Вопрос снят. Моя ошибка. Неверно указал путь в $webpage->print_screen().


Возможно, вам также будет интересно:

  • В excel ошибка на ложь
  • В dvd ошибка диска что это
  • В canon ошибка err 01 нет связи
  • В afterfx exe возникла ошибка будет закрыт
  • В 3935 ошибка шевроле круз

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии