Как создать файл с параметрами?
В оригинале идёт как
#include "settings.txt";
auth_type="mgl"; //способ авторизации: mgl или email
check_tasks=1; // проверять задания
check_mag=1; // проверять магазин
но в собранный exe файл сразу скомпилировался.
Допустим читать файл построчно и разбирать что там написано, но как потом присвоить переменным значения? Например получу key="check_mag" val="1" и сделать что-то типа eval(key+"="+val);
1. resident - 31 Августа, 2023 - 14:40:41 - перейти к сообщению
2. Zireael - 31 Августа, 2023 - 18:40:19 - перейти к сообщению
Обычно используются файлы ini.
Запись:
Чтение:
Запись:
CODE:
external (INT, "WriteINI", "WritePrivateProfileStringA", "kernel32.dll");
string Path = pathfolder()+"settings.ini";
string auth_type = "mgl";
int check_tasks = 0;
int check_mag = 1;
WriteINI("Settings", "auth_type", auth_type, Path);
WriteINI("Settings", "check_tasks", format(check_tasks), Path);
WriteINI("Settings", "check_mag", format(check_mag), Path);
start(Path);
string Path = pathfolder()+"settings.ini";
string auth_type = "mgl";
int check_tasks = 0;
int check_mag = 1;
WriteINI("Settings", "auth_type", auth_type, Path);
WriteINI("Settings", "check_tasks", format(check_tasks), Path);
WriteINI("Settings", "check_mag", format(check_mag), Path);
start(Path);
Чтение:
CODE:
external (INT, "ReadINI", "GetPrivateProfileStringA", "kernel32.dll");
string Path = pathfolder()+"settings.ini";
char arr[256];
ReadINI("Settings", "auth_type", 0, address(#arr[0]), sizearray(arr), Path);
string auth_type = format(#arr[0]);
ReadINI("Settings", "check_tasks", 0, address(#arr[0]), sizearray(arr), Path);
int check_tasks = formatsn(format(#arr[0]));
ReadINI("Settings", "check_mag", 0, address(#arr[0]), sizearray(arr), Path);
int check_mag = formatsn(format(#arr[0]));
messagebox(auth_type);
messagebox(check_tasks);
messagebox(auth_type);
string Path = pathfolder()+"settings.ini";
char arr[256];
ReadINI("Settings", "auth_type", 0, address(#arr[0]), sizearray(arr), Path);
string auth_type = format(#arr[0]);
ReadINI("Settings", "check_tasks", 0, address(#arr[0]), sizearray(arr), Path);
int check_tasks = formatsn(format(#arr[0]));
ReadINI("Settings", "check_mag", 0, address(#arr[0]), sizearray(arr), Path);
int check_mag = formatsn(format(#arr[0]));
messagebox(auth_type);
messagebox(check_tasks);
messagebox(auth_type);
3. resident - 01 Сентября, 2023 - 06:18:21 - перейти к сообщению
Смысл тягать библиотеку, ничего она не даёт, проще регуляркой пройти и потом с условиями так же назначить значения переменным.
parserjson вот создаёт переменную из строки с нужными объектами, но формат не особо человекочитаем. Вот из ini сделать json и его распарсить вроде норм получается.
parserjson вот создаёт переменную из строки с нужными объектами, но формат не особо человекочитаем. Вот из ini сделать json и его распарсить вроде норм получается.
4. resident - 04 Сентября, 2023 - 16:30:26 - перейти к сообщению
CODE:
string resp;
string P;
string json;
if(fopen(path+"\settings.txt", "r")!=0) {
while(freadline(resp)) {
regexreplace(1, #P, resp, "([a-z_]+)+=(.+);.*","^"$1^":^"$2^"");
if(size(json)>0) json=json+",";
json=json+P;
}
fclose();
} else {
messagebox("Файл settings.txt не найден");
}
json="{"+json+"}";
parserjson(settings,json);
messagebox(settings.auth_type);
string P;
string json;
if(fopen(path+"\settings.txt", "r")!=0) {
while(freadline(resp)) {
regexreplace(1, #P, resp, "([a-z_]+)+=(.+);.*","^"$1^":^"$2^"");
if(size(json)>0) json=json+",";
json=json+P;
}
fclose();
} else {
messagebox("Файл settings.txt не найден");
}
json="{"+json+"}";
parserjson(settings,json);
messagebox(settings.auth_type);
параметры без кавычек
auth_type=email; //способ авторизации: mgl или email
check_tasks=1; // проверять задания
check_mag=1; // проверять магазин