C++ Как же создать простейшую загрузку, и отгрузку конфига в ваш проект. С++

Забаненный
Статус
Оффлайн
Регистрация
9 Фев 2021
Сообщения
181
Реакции[?]
97
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для тех кто мало понимает о чем идет речь - config это удобная утилита для сохранения настроек вашего чита, скрипта, и т.д. Конфиги часто используют в больших проектах. Не будем тянуть и приступим к делу.
Код:
void configurations() // Сохранение твоего конфига

{

        std::ofstream fout;  //  Поток для записи.

        fout.open("C:\\Windows\\Configuration\\Config.ini");   //   открываем файл для записи.

        fout << Твоя переменная, float,int,bool,char и т д. << "\n";    //  сюда вводим твою переменную которую ты хочешь сохранить в конфиг

        fout.close();  //  обязательно! Закрываем что бы не повредить источник и освободить память.

}



void Loadconfigurations()  //  Загрузка твоего конфига

{

    std::ifstream fin("C:\\Windows\\Configuration\\Config.ini"); // читаем построчно твой сохраненный конфиг.



    if (fin.is_open()) // проверка на то открыт ли файл (ред)

    {

        fin >> Твоя переменная что была в fout.   //   запомни! что бы конфиг считало корректно нужно ставить переменную идентично записи. Это очень важно!

        fin.close();   //   и закрываем.

    }

}



void deleteconfigurations() // Удаление конфига, это не обязательно. Но почему бы и нет.

{

            std::remove("C:\\Windows\\Configuration\\Config.ini"); (ред)

}
// P.S что бы он сохранял конфиг и считывал файл всегда должен быть открыт от имени админа. Что бы файл всегда открывался от имени админа нужно поставить в настройках visual studio. Тыкаем правой кнопкой по твоему проекту, нажимаем: Свойство, Компоновщик, Файл манифеста, уровень выполнения UAC и ставим на requireAdministrator. Вот и всё, теперь ты можешь сохранять конфиги.
 
Последнее редактирование:
Легенда форума
Статус
Онлайн
Регистрация
10 Дек 2018
Сообщения
4,375
Реакции[?]
2,280
Поинты[?]
184K
Во-первых, используй код боксы 1656311688418.png
Во-вторых,
if (fin.is_open()) // открываем для чьтения
в каком месте здесь открытие для чтения? Здесь только проверка на то, открыт ли файл, is_open() возвращает только true или false. Вот basic_ifstream::open уже открывает файл.
1656311830539.png
В-третьих,
fout.open("C:\\Windows\\Configuration\\Config.ini"); // открываем файл для записи.
как ты собирался открывать файл, которого не существует? У тебя нет кода его создания. basic_ifstream::open работает только с уже существующими файлами.

if (fin.is_open()) // открываем для чьтения
До этого ты не открывал файл, чтобы затем делать эту проверку. Соу, это работать не будет и по проверке всегда будет проходить false.
Что за функция remove? Такой нет в дефолтном стриме.

Код нерабочий.
 
Последнее редактирование:
(noad)
Пользователь
Статус
Оффлайн
Регистрация
21 Мар 2019
Сообщения
273
Реакции[?]
50
Поинты[?]
0
Забаненный
Статус
Оффлайн
Регистрация
9 Фев 2021
Сообщения
181
Реакции[?]
97
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Во-первых, используй код боксы Посмотреть вложение 209465
Во-вторых,

в каком месте здесь открытие для чтения? Здесь только проверка на то, открыт ли файл, is_open() возвращает только true или false. Вот basic_ifstream::open уже открывает файл.
Посмотреть вложение 209466
В-третьих,

как ты собирался открывать файл, которого не существует? У тебя нет кода его создания. basic_ifstream::open работает только с уже существующими файлами.


До этого ты не открывал файл, чтобы затем делать эту проверку. Соу, это работать не будет и по проверке всегда будет проходить false.

Что за функция remove? Такой нет в дефолтном стриме.

Код нерабочий.
Не нужно создавать файл :D, код рабочий я его применяю для своих конфигах, я допустил ошибку только "Проверка для чтения", а файл создавать и не нужно, он автоматически создаться. remove удаляет .txt, .ini.
 
FanHack Team
Пользователь
Статус
Оффлайн
Регистрация
26 Сен 2017
Сообщения
72
Реакции[?]
51
Поинты[?]
0
Можно проще!)

Код:
struct Config
{
   bool selectEsp;
  int aim;

 и тд

};


void SaveConfig(Config* ArGa)
{
    DWORD dwBytesWritten;
    HANDLE hOut = CreateFileA("Config.panel", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hOut != INVALID_HANDLE_VALUE){
    WriteFile(hOut, *&ArGa, sizeof(Config), &dwBytesWritten, NULL);
    CloseHandle(hOut);
}
}

void ReadConfig(Config* ArGa)
{
    DWORD dwBytesWritten;
    HANDLE hOut = CreateFileA("Config.panel", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if(hOut != INVALID_HANDLE_VALUE){
    ReadFile(hOut, *&ArGa, sizeof(Config), &dwBytesWritten, NULL);
    CloseHandle(hOut);
}
}
Можно еще проверок добавить если надо.

Код:
bool FileExist(char* name)
{
    return GetFileAttributesA(name) != INVALID_FILE_ATTRIBUTES;
}
 
Забаненный
Статус
Оффлайн
Регистрация
9 Фев 2021
Сообщения
181
Реакции[?]
97
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Можно проще!)

Код:
struct Config
{
   bool selectEsp;
  int aim;

и тд

};


void SaveConfig(Config* ArGa)
{
    DWORD dwBytesWritten;
    HANDLE hOut = CreateFileA("Config.panel", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hOut != INVALID_HANDLE_VALUE){
    WriteFile(hOut, *&ArGa, sizeof(Config), &dwBytesWritten, NULL);
    CloseHandle(hOut);
}
}

void ReadConfig(Config* ArGa)
{
    DWORD dwBytesWritten;
    HANDLE hOut = CreateFileA("Config.panel", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if(hOut != INVALID_HANDLE_VALUE){
    ReadFile(hOut, *&ArGa, sizeof(Config), &dwBytesWritten, NULL);
    CloseHandle(hOut);
}
}
Можно еще проверок добавить если надо.

Код:
bool FileExist(char* name)
{
    return GetFileAttributesA(name) != INVALID_FILE_ATTRIBUTES;
}
Меньше кода: Да, Но слишком всё замудренно. Я слил простейшую, а не сложную. Ключевое слово Проще. Моя работает у всех и одинаково, да и код проще
 
Пользователь
Статус
Оффлайн
Регистрация
12 Фев 2020
Сообщения
382
Реакции[?]
95
Поинты[?]
0
для каких безмозглышей это расчитано? хватит щитпостить
 
Сверху Снизу