Ассемблер под Windows №21

Внешняя конфигурация


Доброго времени суток, уважаемые подписчики.


Итоги голосования:
ПроектКол-во голосов
Дизассемблер52
Среда разработки19
Улита для просмотра картинок25
Игра39
Поэтому я принял решение создавать два проекта одновременно, игру и дизассемблер!

Сегодня мы рассмотрим тему, которая очень важна в любом проекте: Получение параметров из .ini или .cfg файла. За место использования стандартных функций Windows работы с .ini файлами я предпочитаю работать с .cfg/.ini файлами процедурой собственного написания. Она написана как часть программы, скомпилированная в .obj файл с экспортом одной процедуры. То есть она должна быть добавлена в процессе линковки! Её код (с подробными комментариями) и её саму можно скачать отсюда. В связи с тем, что её код содержит достаточно подробные комментарии, я не считаю нужным ещё раз переписывать её в рассылку. Структура файла, с которым она работает такова:
- всё написанное после символа "/" в начале строки (!) считается комментарием.
- пустая строка за строку не считается.
- параметром считается любая строка, после которой находится символ "=".
- параметр считается строкой, если после "=" находятся двойные кавычки (и в конце строки тоже).
- в других случаях параметр считается числом.
Примером использования может служить следующая программа:
includeuser32.inc
includekernel32.inc
includemacros.inc
includedef32.inc
.386
.model flat
extrn GetConfig:dword
.data
oTitledd ?
oTextdd ?
filedb 'C:\proba.cfg',0
paramzdb 'title',0
db 'text',0
.code
_start:
null ebx
mov edi, offset file
run GetFileAttributes, edi
run CreateFile, edi, GENERIC_READ, FILE_SHARE_READ, ebx, OPEN_EXISTING, eax, ebx
push eax
run CreateFileMapping, eax, ebx, PAGE_READONLY, ebx, ebx, ebx
push eax
run MapViewOfFile, eax, FILE_MAP_READ, ebx, ebx, ebx
push eax
run GetConfig, eax, offset paramz, offset oTitle
run UnMapViewOfFile
run CloseHandle
run CloseHandle
run MessageBox, ebx, oText, oTitle, MB_OK
run ExitProcess, ebx
end _start

Она открывает файл "C:\proba.cfg" (Файл должен существовать) и считывает из него два парматра, обе строки. Но, в отличие от наших прошлых програм эту нужно компилировать следующим образом:
ml /c /coff params.asm
link32 params.obj config.obj /subsystem:windows /entry:start
и config.obj должен находиться в том-же каталоге.


На сегодня это всё. Если есть какие вопросы, пишите. Пишите на Dark_Lord@RusFAQ.ru или Dark_Lord@land.ru.
Или свяжитесь со мной по ICQ, мой номер 126222874!

Сайт управляется системой uCoz