Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330

Исключение System.OverflowException если запускаю из Visual Studio

18.12.2015, 20:28. Показов 4540. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, тут такое дело, подключил либу AForge.Video.VFW для записи видео.
Компилирую, нажимаю "Запись", выдает исключение System.OverflowException. Если программу запускать не из под Visual Studio, а просто exe из папки то все ок, запись идет. В чем может быть проблема? Я так понимаю какая-то проблема с разрядностью, но не понимаю почему.. ведь просто из папки exe запускается как надо. Да и менял я на х86 и на х64, не помогает..

Код ошибки под спойлером
Кликните здесь для просмотра всего текста
Вызов функции:
C#
1
2
3
Bitmap bmp = Properties.Resources.image;
...
writer.AddFrame(bmp);
Сама функция
C#
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
 public void AddFrame( Bitmap frameImage )
        {
                lock (sync)
                {
                    // check if AVI file was properly opened
                    if (buffer == IntPtr.Zero)
                        throw new System.IO.IOException("AVI file should be successfully opened before writing.");
 
                    // check image dimension
                    if ((frameImage.Width != width) || (frameImage.Height != height))
                        throw new ArgumentException("Bitmap size must be of the same as video size, which was specified on opening video file.");
 
                    // lock bitmap data
                    BitmapData imageData = frameImage.LockBits(
                        new Rectangle(0, 0, width, height),
                        ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
 
                    // copy image data
                    int srcStride = imageData.Stride;
                    int dstStride = stride;
 
                    int src = imageData.Scan0.ToInt32() + srcStride * (height - 1); //ОШИБКА ЗДЕСЬ!!!
                    int dst = buffer.ToInt32();
 
                    for (int y = 0; y < height; y++)
                    {
                        Win32.memcpy(dst, src, dstStride);
                        dst += dstStride;
                        src -= srcStride;
                    }
 
                    // unlock bitmap data
                    frameImage.UnlockBits(imageData);
 
                    // write to stream
                    if (Win32.AVIStreamWrite(streamCompressed, position, 1, buffer,
                        stride * height, 0, IntPtr.Zero, IntPtr.Zero) != 0)
                        throw new VideoException("Failed adding frame.");
 
                    position++;
                }
        }
Ошибка в этой строчке кода
C#
1
 int src = imageData.Scan0.ToInt32() + srcStride * (height - 1);
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.12.2015, 20:28
Ответы с готовыми решениями:

Компиляция в Visual Studio Team System (Visual Basic)
Здравствуйте, Создал проект формы рабочий, но exe в bin/Debug не работает на другом компьютере, хотя Framework 3.5 там есть. В чем может...

Почему не возникает исключение OverflowException?
Есть такой код: //max - 2147483647 int a = 2000000000; int b = 2000000000; int c = 0; try {

System.OverflowException: Value was either too large or too small for an Int32
private void button5_Click(object sender, EventArgs e) { New.img5 = new Bitmap(New.NAME_FILE); Color...

4
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
18.12.2015, 20:56
Скорее всего студия настроена так, что в экзешнике отключена проверка на OverflowException. Сделайте так и ошибка будет везде.
C#
1
2
3
4
checked
{
    int src = imageData.Scan0.ToInt32() + srcStride * (height - 1);
}
Посмотрите какое там значение получается, возможно влезет в long.
0
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
18.12.2015, 21:03  [ТС]
Цитата Сообщение от Lexeq Посмотреть сообщение
Посмотрите какое там значение получается, возможно влезет в long.
Я пытался поставить там ToInt64(), но тогда строчка подчеркивается красным, типа не удается преобразовать в long, можно только в ToInt32(), в ToInt16() тоже нельзя.. А значение приходит вроде как раз размером long, но при запуске проги не из среды visual studio все ок же) Я пришел к мысли что это ошибка компилятора, но как бы ее исправить.. На такие мысли натолкнула тема System.OverflowException: Переполнение в результате выполнения арифметической операции
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
18.12.2015, 21:30
Лучший ответ Сообщение было отмечено Nalik как решение

Решение

А так полагаю что Scan0 это IntPtr, тогда так должно работать, причем вероятно только на x64.
C#
1
IntPtr src = imageData.Scan0 + srcStride * (height - 1);
1
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
18.12.2015, 22:23  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
А так полагаю что Scan0 это IntPtr, тогда так должно работать, причем вероятно только на x64.
Да, действительно работает, спасибо большое!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2015, 22:23
Помогаю со студенческими работами здесь

System.OverflowException: Переполнение в результате выполнения арифметической операции
/* * Created by SharpDevelop. * User: Александр * Date: 06.10.2014 * Time: 10:26 * * To change this template use Tools |...

TimeSpan выдает исключение OverflowException при попытке распарсить строку на дату
Выдает исключение OverflowException при попытке распарсить строку на дату. Входные данные: stat=&quot;25:49&quot;; ...

Конвертация(или сохранение) проектов Visual Studio 2008 c# в Visual Studio 2005 c#
Доброго времени суток =) Можно ли, конвертировать проект или же сохранить под другую версию программы(например MS Word 2007 может...

запускаю её в visual studio естественно настроено все под c но её он не компилирует почему?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #include &lt;locale.h&gt; int main() { int a, b, c; setlocale(0, &quot;&quot;); ...

Скажите если я напишу программу на C# в MS Visual studio 2012 на framework 3.5 я потом смогу открыть проект моей программы на MS Visual studio 2008
Скажите если я напишу программу на C# в MS Visual studio 2012 на framework 3.5 я потом смогу открыть проект моей программы на MS Visual...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru