Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Сохранение, загрузка массива

Страниц (1): [1]
 

1. konctantin777 - 16 Февраля, 2023 - 10:49:59 - перейти к сообщению
Здравствуйте.
Задача сохранить массив в файл, чтобы при следующем запуске кибора, загрузить обратно в массив X_итог[n] и Y_итог[n].

записываю так:
CODE:
if (fopen ("c:\!123.txt", "w")!=0)
{

for (n=0; n<500; n++)
{
fwrite(X_итог[n]); fwrite(";"); fwrite(Y_итог[n]); fwrite(ENDL);
}
fwrite(ENDL);

fclose();
}


Не понял как реализовано тут:
CODE:
string text[1000]; // файл не должен превышать 1000 строк

if (fopen("C:\Users\abc\Desktop\111.txt", "r")!=0) // если файл открылся
{
for(int i=0; freadline(text[i])!=0; i++){} // читаем по строке до конца файла
fclose(); // закрываем файл

// массив text содержит весь файл
messagebox("Первая строка: "+text[0]);
messagebox("Вторая строка: "+text[1]);
messagebox("Пятая строка: "+text[4]); // пятая строка
int num=formatsn(text[4]); // переводим строку в число и присваиваем переменной num
messagebox(num);
}

Как при следующем запуске, получить, то что сохранил ?
(Добавление)
Или лучше будет 2 файла отдельно сохранять и загружать по отдельности с freadlineall?
CODE:
string slovar[500];
int k;

if (fopen ("C:\russian.txt", "r")!=0)
{
k=freadlineall(#slovar[0], 100);
fclose();
}
messagebox (k);

for (int n=0; n<k; n++)
{
messagebox (slovar[n]);
}
2. OKStyle - 16 Февраля, 2023 - 12:10:02 - перейти к сообщению
Тебе нужно сохранить в один файл обе информации.
Сохранил первые 500 строк Х_Итог, вторые 500 строк У_Итог.

В итоге, считываешь с помощью freadlineall всю информацию.
В таком же порядке и считываешь. Не вижу проблем, можно спокойно использовать. (Единственное, ты должен знать сколько строк записываешь, чтобы понимать что и где будет загружено)
3. konctantin777 - 16 Февраля, 2023 - 13:41:23 - перейти к сообщению
Хммм... Т.е. узнать количество, разделить на два и так узнать 1й и 2й параметр ?
4. Zireael - 16 Февраля, 2023 - 17:45:25 - перейти к сообщению
Сохранить массив:
CODE:
int x[500], y[500];
x[0]=10; y[0]=111;
x[1]=20; y[1]=222;
x[2]=30; y[2]=333;
x[3]=40; y[3]=444;


if(fopen ("D:\123.txt", "w")!=0)
{
int _size = sizearray(x);
for (int i=0; i<_size; i++)
{
fwrite(x[i]); fwrite(";"); fwrite(y[i]); fwrite(ENDL);
}
fclose();
}

Загрузить массив:
CODE:
int x[500], y[500];
string temp[500];
string num[2];

if (fopen ("D:\123.txt", "r")!=0)
{
int k=freadlineall(#temp[0], sizearray(x)); fclose();

for (int i=0; i<k; i++)
{
regexsearch(2, #num[0], temp[i], "[^;]+");
x[i] = formatsn(num[0]);
y[i] = formatsn(num[1]);
}

messagebox (format(x[0])+"^t"+format(y[0]));
messagebox (format(x[1])+"^t"+format(y[1]));
}
5. konctantin777 - 16 Февраля, 2023 - 23:48:37 - перейти к сообщению
OKStyle , Zireael , Спасибо! )
6. konctantin777 - 22 Февраля, 2023 - 06:23:52 - перейти к сообщению
 Zireael пишет:
Загрузить массив:

Подскажите как правильно тут регулярку сделать если в строчке может быть и одно число и 3 и 4 ?
(Добавление)
Т.е. строка может содержать: "Моб; коорд Х; коорд У; атаковать ли". Разделители ";" всегда 3шт есть
7. Zireael - 22 Февраля, 2023 - 14:56:42 - перейти к сообщению
Нужны примеры строк и что из них нужно получить.
8. konctantin777 - 22 Февраля, 2023 - 15:06:50 - перейти к сообщению
Строка "Моб; коорд Х; коорд У; атаковать ли". Нужно получить название, координаты, примечание. Так думаю в 4 массива записать и смотреть по необходимости нужное значение.
9. Zireael - 22 Февраля, 2023 - 15:36:18 - перейти к сообщению
CODE:
string result[4];
string text = "Моб; коорд Х; коорд У; атаковать ли";

int count = regexsearch(4, #result[0], text, "[^;]+");
messagebox("Найдено совпадений: "+format(count));
for(int i=0; i<count; i++)
{
regexreplace(-1, #result[i], result[i], "^\s+|\s+$", ""); // удалить пробелы в начале и конце строки
messagebox(result[i]);
}
10. konctantin777 - 22 Февраля, 2023 - 15:40:35 - перейти к сообщению
Zireael , Спасибо !!

Powered by ExBB FM 1.0 Final