С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для arzrav
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 211

Отладка работы функции ReadFile для обработки bmp изображений

01.10.2012, 18:09. Показов 2121. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, пишу программу для обработки bmp изображений. Столкнулся с проблемой, что при вызове функции ReadFile программа вылетает, хотя все параметры переданы фукции согласно msdn. Подскажите в чем может быть проблема, а то никаких идей уже нет.
Заранее спасибо.

Код:

Assembler
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
.586
.model flat, stdcall
option casemap: none
 
    include \masm32\include\windows.inc
    include \masm32\include\kernel32.inc
    include \masm32\include\user32.inc
    include \masm32\include\comdlg32.inc
 
    includelib \masm32\lib\kernel32.lib
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\comdlg32.lib
 
    CommonDialogs PROTO :DWORD, :DWORD, :DWORD, :DWORD
    FileOpenDialog PROTO :DWORD
    FileSaveDialog PROTO :DWORD
 
.data
 
    dlgname db "COMMONDIALOGS", 0
    TextErrorOpenFile db "Ошибка открытия файла", 0
    TextErrorReadFile db "Ошибка чтения файла", 0
    NumberOfBytesToRead dw 250
    NumberOfBytesRead dw -1
    Buffer db 256 dup (0)
    ; -----------------------------------
    ; Used by open & save file dialogs
    ; -----------------------------------
    szFile        db "*.*", 256 dup (0)     
    strFilter     db "All Files", 0
    ; -----------------------------------
    ; Required structures used by dialogs
    ; -----------------------------------
    ofn OPENFILENAME <>
    os OFSTRUCT <>
    bfh BITMAPFILEHEADER <>
 
.data?
 
    hInstance HINSTANCE ?
    CommandLine LPSTR ?
    hFile HFILE ?
 
.const
 
    IDC_EXIT equ 0
    IDC_BUTTONOPEN equ 1
    IDC_BUTTONSAVE equ 2
 
.code
 
start:
    invoke GetModuleHandle, NULL
    mov hInstance, eax
    ; --------------------------------------------
    ; Call the dialog box stored in resource file.
    ; --------------------------------------------
    invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR CommonDialogs,0
    invoke ExitProcess, eax
 
    CommonDialogs proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
    
        .IF uMsg == WM_INITDIALOG
 
        .ELSEIF uMsg == WM_COMMAND
                mov eax,wParam
                .IF eax == IDC_BUTTONOPEN
                    invoke FileOpenDialog, hWin
                    .IF eax!=0
                        invoke OpenFile, ofn.lpstrFile, addr os, OF_READWRITE
                        mov hFile, eax
                        .IF eax==-1
                            invoke MessageBox, hWin, addr TextErrorOpenFile, NULL, MB_OK
                        .ELSE
                            invoke ReadFile, hFile, addr Buffer, NumberOfBytesToRead, addr NumberOfBytesRead, NULL
                            ;.IF eax==0
                            ;    invoke MessageBox, hWin, addr TextErrorReadFile, NULL, MB_OK
                            ;.ELSE
                            ;    mov ax, word ptr Buffer
                            ;    mov bfh.bfType, ax
                            ;    mov eax, dword ptr Buffer+2
                            ;    mov bfh.bfSize, eax
                            ;.ENDIF
                            invoke CloseHandle, hFile
                        .ENDIF
                    .ENDIF
                .ELSEIF eax == IDC_BUTTONSAVE
                    invoke FileSaveDialog, hWin
                .ELSEIF eax == IDC_EXIT
                    invoke SendMessage, hWin, WM_CLOSE, 0, 0
                .ENDIF
        .ELSEIF uMsg == WM_CLOSE
            invoke EndDialog,hWin,0
        .ENDIF
        xor eax,eax
        ret
    
    CommonDialogs endp
 
    FileOpenDialog proc hwnd:DWORD
 
        ; --------------------------------------
        ; Initialize the OPENFILENAME structure.
        ; --------------------------------------
        invoke RtlZeroMemory,ADDR ofn,SIZEOF ofn
        mov ofn.lStructSize,SIZEOF ofn
        mov eax,hwnd
        mov ofn.hwndOwner,eax
        mov eax,OFFSET szFile
        mov ofn.lpstrFile,eax
        mov ofn.nMaxFile,SIZEOF szFile
        mov eax,OFFSET strFilter
        mov ofn.lpstrFilter,eax
        mov ofn.nFilterIndex,1
        mov ofn.lpstrFileTitle,0
        mov ofn.nMaxFileTitle,0
        mov ofn.lpstrInitialDir,0
        mov ofn.Flags,OFN_PATHMUSTEXIST
        ; -----------------------------------------
        ; Call the File Open Common Control dialog.
        ; -----------------------------------------
        invoke GetOpenFileName,ADDR ofn 
        ; -------------------------------------------------------
        ; If user picks a file name and clicks the OK button the
        ; return value is NONZERO. The buffer pointed to by the
        ; lpstrFile member contains the full path and file name
        ; choosen. If Cancel or [X] is clicked or an error occurs
        ; the return value is ZERO.
        ; -------------------------------------------------------
        ret
 
    FileOpenDialog endp
 
    FileSaveDialog proc hwnd:DWORD
 
        ; --------------------------------------
        ; Initialize the OPENFILENAME structure.
        ; --------------------------------------
        invoke RtlZeroMemory,ADDR ofn,SIZEOF ofn
        mov ofn.lStructSize,SIZEOF ofn
        mov eax,hwnd
        mov ofn.hwndOwner,eax
        mov eax,OFFSET szFile
        mov ofn.lpstrFile,eax
        mov ofn.nMaxFile,SIZEOF szFile
        mov eax,OFFSET strFilter
        mov ofn.lpstrFilter,eax
        mov ofn.nFilterIndex,1
        mov ofn.lpstrFileTitle,0
        mov ofn.nMaxFileTitle,0
        mov ofn.lpstrInitialDir,0
        mov ofn.Flags,OFN_PATHMUSTEXIST
        ; -----------------------------------------
        ; Call the File Save Common Control dialog.
        ; -----------------------------------------
        invoke GetSaveFileName,ADDR ofn 
        ; -----------------------------------------------------------
        ; If the user specifies a file name and clicks the OK button
        ; and the function is successful the return value is NONZERO.
        ; The buffer pointed to by the lpstrFile member contains the
        ; full path and file name specified by the user. If Cancel or
        ; [X] is clicked or an error occurs the return value is ZERO.
        ; -----------------------------------------------------------
        ret
 
    FileSaveDialog endp
    
end start
Файл ресурсов:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "\masm32\include\resource.h"
#define IDC_EXIT 0
#define IDC_BUTTONOPEN 1
#define IDC_BUTTONSAVE 2
 
COMMONDIALOGS DIALOG DISCARDABLE  0, 0, 287, 180
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Fingerprinting"
FONT 8, "MS Sans Serif"
{
    PUSHBUTTON "File Open Dialog", IDC_BUTTONOPEN, 14, 55, 121, 14
    PUSHBUTTON "File Save Dialog", IDC_BUTTONSAVE, 14, 74, 121, 14
    PUSHBUTTON "Exit", IDC_EXIT, 224, 146, 50, 24
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2012, 18:09
Ответы с готовыми решениями:

классы для работы с базами данных, для обработки ввода пользователей и для работы с пользовательским интерфейсом.
Вопрос к профи ASP.NET. В данный момент мной разрабатываються классы: для работы с базами данных, для обработки ввода пользователей и для...

Создать функцию для обработки символьных строк. За образец брать библиотечные функции обработки строк языка С, но не применять их в своей функции
Доброго времени суток! Крайне необходима помощь экспертов в С++! Кто может - не оставьте меня в беде))) Вот задания: 3. Создать...

Создать таблицу 2х2 для отображения в ее ячейках изображений в формате *.bmp
Создать таблицу 2х2 для отображения в ее ячейках изображений в формате *.bmp.

2
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
01.10.2012, 18:44
NumberOfBytesToRead dd 250
1
 Аватар для arzrav
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 211
01.10.2012, 19:53  [ТС]
Всё верно, спасибо! И как я сам не заметил?) Вопрос закрыт.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2012, 19:53
Помогаю со студенческими работами здесь

Библиотека для обработки изображений
Здравствуйте программисты. Хочу спросить у вас, есть ли для .NET бесплатная библиотека для обработки изображений: изменения размера,...

Программа для обработки растровых изображений
Всем привет!)) Мне задали курсач по программированию на Visual Studio C++. Разработать программу для обработки растровых изображений,...

Скрипт закачки и обработки изображений для сайта
Есть сайт фото галерея. Сейчас процесс добавления в галерею новой фотки состоит в то что я подготавливаю в фотошопе 2 версии фотки -...

Как ускорить денвер для обработки изображений
Здравствуйте При помощи php делаю обработку узображений, на одну картинку уходит примерно 20 секунд, обрабатываю раз в неделю по 600...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru