PDA

Просмотр полной версии : Как вынести оффсеты в ini файл???


wajskopf
04.01.2012, 10:23
Подскажите пожалуйста кому нетрудно, как вынести правильно оффсеты в ini файл.

Moder Death
04.01.2012, 10:33
в исходниках от gurin куча примеров с выносом в ini для Delphi

а тебе для какого языка?

BritishColonist
04.01.2012, 16:39
держи пример на C++ Builder, думаю, привести к остальным языкам проблемой не будет, ибо принцип в любом случае одинаков:

#include <inifiles.hpp>

DWORD BA;
DWORD GA;
WORD PlayerOffset;

void LoadConfigData()
{
TIniFile* Config = new TIniFile("C:\\PerfectWorld\\element\\config\\offsets.ini"); // полный (!) путь к файлу
BA = Config->ReadInteger("MAIN","BA",0);
GA = Config->ReadInteger("MAIN","GA",0);
PlayerOffset = Config->ReadInteger("OFFSETS","PlayerOffset",0);

// ...

delete Config; // освобождаем память
}

Соответствующий файл должен выглядеть так:

[MAIN]
BA=0x100500
GA=0x100500
[OFFSETS]
PlayerOffset=0x15

Как работает ReadInteger("MAIN","BA",123): в файле ищется секция MAIN, ключ BA. Если секция, ключ или значение отсутствует, результатом чтения будет 123 (последний параметр функции), а если есть - соответствующее ключу значение.
Если нужно записывать, а не считывать, то используется аналогичная функция WriteInteger.

P.S. Насчёт шестнадцатеричных значений не уверен, возможно, придётся хранить в INI десятичные оффсеты и адреса.

wajskopf
04.01.2012, 20:57
Спасибо большое, поковыряюсь)) Именно в С++ и надо было.

Добавлено через 14 часов 44 минуты
Проблему решил несколько иначе... В MSVC нет inifiles.hpp. Зато есть простая функция от WINAPI "GetPrivateProfileInt"

В коде выглядит примерно так
DWORD BA = GetPrivateProfileInt ("mine", "BA", NULL, "D:\\drubotconfig.ini");

а в самом ini файле как подсказали выше.
Спасибо всем кто принял участие))