Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как убрать рандомно 10 аккаунтов так, чтобы не нарушить формат данных в тхт
code (Отобразить)CODE:string path_to_file="C:\all_accs.txt"; // путь к файлу
char c[999999];
string s[999], text;
int count_symbol, count_account, random[10];
if(fopen(path_to_file, "rb")) // открыть файл для чтения
{
count_symbol=freadb(#c[0], sizearray(c))-1; // прочитать весь файл в массив
fclose(); // закрыть файл
text=format(#c[0], count_symbol); // скопировать текст из массива в строку
count_account=regexsearch(sizearray(s), #s[0], text, ".+?([\r\n]+|\Z){4}", SINGLELINE | MULTILINE); // поиск 4 строк
messagebox("Всего аккаунтов: "+format(count_account));
if(count_account>9) // если в файле больше 9 аккаунтов
{
random_func(count_account, #random[0]); // заполнить массив random случайными числами (числа не повторяются)
for(int i=0; i<10; i++)
{
//messagebox("Удаляемый аккаунт: "+format(random[i])+formatic(13)+formatic(10)+s[random[i]]);
regexreplace(1, #text, text, s[random[i]], ""); // удаляем случайные аккаунты
}
if(fopen(path_to_file, "wb")) // открыть файл для записи
{
strcpy(#c[0], text); // скопировать строку в массив
fwriteb(#c[0], size(#c[0])); // записать в файл
fclose(); // закрыть файл
}
}
else messagebox("В файле меньше 10 аккаунтов");
}
function random_func(int count, int #r)
{
new int r2[count+1];
for(int i=0; i<count; i++)r2[i]=i; // заполнить массив числами 0,1,2,3 и т.д.
for(i=0; i<count*5; i++) // перемешать массив,
{
int random1=rand(0, count), random2=rand(0, count);
int temp=r2[random1];
r2[random1]=r2[random2];
r2[random2]=temp;
}
for(i=0; i<10; i++)r[i]=r2[i]; // записать первые 10 чисел в массив random (по указателю r)
delete r2;
}
Копию файла all_accs.txt где-то сохраните, потому что скрипт при каждом запуске будет удалять из него по 10 аккаунтов. |