здравствуйте! урок 13 "Memory Mapped файлы" - не работает: файл не загружается в edit и, соответственно, нечему сохраняться. Оно и не удивительно, ведь в примере нет необходимых функций для этого. Ключевое место (открытие-сохранение) переписал: Код (Text): .if ax==IDM_OPEN invoke GetOpenFileName, ADDR ofn .if eax==TRUE invoke CreateFile,addr buffer,GENERIC_READ or GENERIC_WRITE,\ FILE_SHARE_READ or FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,0 mov hfile,eax invoke CreateFileMapping,hfile,0,PAGE_READWRITE ,0,0,0 mov hmapfile,eax invoke MapViewOfFile,hmapfile,FILE_MAP_ALL_ACCESS ,0,0,0 mov hmvfile1,eax invoke SendDlgItemMessage,hWnd,IDC_EDT1,WM_SETTEXT,0,hmvfile1 invoke UnmapViewOfFile,hmvfile1 invoke CloseHandle,hmapfile invoke CloseHandle,hfile .endif mov eax,wParam .elseif ax==IDM_SAVE mov ofn.Flags,OFN_LONGNAMES or OFN_EXPLORER or OFN_HIDEREADONLY invoke GetSaveFileName,addr ofn .if eax==TRUE invoke CreateFile,addr buffer,GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ or FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,0 mov hfile ,eax invoke GetProcessHeap mov hheap,eax invoke HeapAlloc,hheap,HEAP_ZERO_MEMORY,MEMSIZE mov pmemory,eax invoke SendDlgItemMessage,hWnd,1004,WM_GETTEXT,MEMSIZE-1,pmemory invoke WriteFile,hfile,pmemory,eax,ADDR SizeReadWrite,NULL invoke HeapFree,hheap,0,pmemory invoke CloseHandle,hfile .endif возникли следующие затруднения: 1. не получается выделить память для сохранения текста из edit с помощью MMF. Делаю аналогичное выделение, а текст в файл не пишется: Код (Text): invoke CreateFileMapping,hfile,0,PAGE_READWRITE ,0,0,0 mov hmapfile,eax invoke MapViewOfFile,hmapfile,FILE_MAP_ALL_ACCESS ,0,0,0 mov hmvfile1,eax invoke SendDlgItemMessage,hWnd,IDC_EDT1,WM_GETTEXT,0,hmvfile1 invoke WriteFile,hfile,hmvfile1,eax,ADDR SizeReadWrite,NULL invoke UnmapViewOfFile,hmvfile1 invoke CloseHandle,hmapfile invoke CloseHandle,hfile Как правильно работать с памятью: открывать-закрывать при чтении и записи или один раз открыть, прочитать файл, послать его в edit, очистить память и снова её использовать? Как читать-писать большие (несколько мб) файлы?
bizdon урок 13 "Memory Mapped файлы" прототип взят из классического курса Iczelion'a т.е. и в Iczelion's tut13 не смотря на то что в меню есть раздел "File->Open" но файлы там тоже не открываются. А вот по открытию файлов и создание подобия Notepad это уже идет в уроках 33-35 "Контрол RichEdit"
Mikl___ - спасибо! здоровьица вам и крепких нервов! (говорят, что обливание холодной водой их укрепляет... урок 13 "Memory Mapped файлы" у Iczelion'a не работает и не учит использовать MMF. Давно сие надо исправить, к чему я прилагаю свои корявые лапы. п.с. аттач по мотивам..
bizdon Спасибо за аттач и поддержку! Появилось несколько новых идей, надеюсь в скором времени опубликовать их на сайте...
Mikl___, можно ли SysTreeView32 анчек зделать? Или лучше туда и не соваться а ассемблером? Блн, какой противный контрол! 'Show shadows under mouse pointer' даже не видно Spy утилитами. Вообщим надо сбросить галку http://d.imagehost.org/0807/Snap4.png Или забыть об этом? Кстати, 4-й урок IcZelone для фасма исчу. :| Нашёл! - invoke SystemParametersInfo,0x1025,FALSE,NULL,SPIF_UPDATEINIFILE
Mikl___ Код (Text): proc p1 locals v1 POINT 1,2 v2 dd 3 v3 dd ? v4 RECT 1,2,3,4 endl mov eax,[v1.x] mov eax,[v2] mov eax,[v3] mov eax,[v4.left] ret 0 endp
Mikl___ Вы бы могли выклдывать всё где-нибудь централизованно? А то лазить по 13 страницам форума как-то неудобно. Вы бы отредактировали свой первый пост и поместили бы туда всё по группам.
Ищу ComboBox кнотрол, желательно с привязкой картинки загруженной на окно. Типа: ComboBox("слева") | X=0; Y=0 ComboBox("справа") | X=80; Y=0
iczelion ред: Код (Text): dpmi enu: http://ftp.cc.uoc.gr/mirrors/openwatcom/devel/docs/dpmi1_0.txt enu: http://ftp.cc.uoc.gr/mirrors/openwatcom/devel/docs/dpmi10.pdf helpassm by Dan Rollins rus(exe): http://www.kalashnikoff.ru/Assembler/prog/helpassm.exe Справочник программиста на персональном компьютере фирмы IBM by Роберт Журден rus(htm/chm): http://www.kalashnikoff.ru/Assembler/prog/jourdain.exe rus(txt): http://bookaudi.ru/savered.php?file=93630 1st stepts towards system programming under ms-dos by for-h@yandex.ru.pdf enu: http://www.fysnet.net/docs/FrstStps.pdf Advanced MS-DOS Programming by Ray Duncan.pdf enu: http://www.ece.ul.ie/homepage/tom_newe/Modules/CE4204/advdos-Duncan.pdf ну и любая хорошая книга
Рецидив. В аттаче 33 и 34 переделанные уроки Iczelion'a "Контрол Richedit: Основы" и "Операции над текстом в RichEdit", сорц, RC и ЕХЕ. 4484 и 8340 байт vs 6656 и 10752 байт в оригинале
Удаляем лишние байты. Урок 33 (4351 байт) и урок 34 (8160 байт). В аттаче сорцы, экзе и capito_res.asm. Собираются батником со следующим содержанием Код (Text): @echo off cls set filename=%1 if exist %filename%.exe del %filename%.exe ml /AT /c /Cp /Gz /I\masm32\include %filename%.asm Link16 /t %filename%.obj ,%filename%.exe; del %filename%.obj ml и Link16 выбраны из старых, тех что умели собирать COM-файлы
Mikl___ не пойму, почему вы под этот цикл себе вику не заведете? трак, например, имеет вполне приличную вику с колоризатором кода и кучей расширений-дополнений. вроде, даже скачать-в-виде-пдф видел. ей ей лучше будет. еще, вот такая штука, возможно, интересна будет.
24 урок с DLL в аттаче сорцы, батник для сборки, файлы capito_res.asm, capito_dll1.asm и готовая DLL и ЕХЕ. Размер DLL 1060 байт, размер ЕХЕ 1862 байта. Под WinXP
Извращаемся с секцией импорта В аттаче: pe_06a.htm и gif к нему сорц и ехе 3-его урока, созданного при использовании ml и link сорц и ехе tut03 батники которыми собирались win и tut03 ml и link16 которые понимают ключ /tiny
Mikl___ Шайтан! 508 byte! Класс! Тут опечатка маленькая. Спасибо! PS. Так на первый взгляд текст tut03.asm уже больше на fasm смахивает )))