Внешняя конфигурация
Доброго времени суток, уважаемые подписчики.
Итоги голосования:
Проект | Кол-во голосов |
Дизассемблер | 52 |
Среда разработки | 19 |
Улита для просмотра картинок | 25 |
Игра | 39 |
Поэтому я принял решение создавать два проекта одновременно, игру и дизассемблер!
Сегодня мы рассмотрим тему, которая очень важна в любом проекте: Получение параметров из .ini или .cfg файла. За место использования стандартных функций Windows работы с .ini файлами я предпочитаю работать с .cfg/.ini файлами процедурой собственного написания. Она написана как часть программы, скомпилированная в .obj файл с экспортом одной процедуры. То есть она должна быть добавлена в процессе линковки! Её код (с подробными комментариями) и её саму можно скачать отсюда. В связи с тем, что её код содержит достаточно подробные комментарии, я не считаю нужным ещё раз переписывать её в рассылку. Структура файла, с которым она работает такова:
- всё написанное после символа "/" в начале строки (!) считается комментарием.
- пустая строка за строку не считается.
- параметром считается любая строка, после которой находится символ "=".
- параметр считается строкой, если после "=" находятся двойные кавычки (и в конце строки тоже).
- в других случаях параметр считается числом.
Примером использования может служить следующая программа:
include | user32.inc |
include | kernel32.inc |
include | macros.inc |
include | def32.inc |
| .386 |
| .model flat |
| extrn GetConfig:dword |
| .data |
oTitle | dd ? |
oText | dd ? |
file | db 'C:\proba.cfg',0 |
paramz | db '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!
|