Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 2.02 Добавлены файловые операции (чтение запись в текстовый файл)

Страниц (12): В начало « ... 4 5 6 7 8 [9] 10 11 12 »
 

81. Dantes3000 - 10 Марта, 2020 - 14:31:09 - перейти к сообщению
konctantin777 , pathfolder() возвращает путь к папке, откуда запустился ехе
82. Arimor - 31 Декабря, 2020 - 06:30:13 - перейти к сообщению
Пытался пытался так и не хватило мозгов как добавить данные из переменной между строк.
Ниже код можно ли как то между строк text[1] и text[2] добавить новую строку? У меня почему то просто удаляется всё содержимое.

CODE:
string text[100];
string path="C:\include\resource.txt"; // путь к файлу
int row=0; // переменная, в которую запишется количество строк в файле
string s="C:\include\resource2.txt";
if (fopen(path, "r" ) !=0) // если файл открылся
{
for(int i=0; freadline(text[i])!=0; i++)row++; // читаем по строке до конца файла
fclose(); // закрываем файл
if (fopen (path, "w")!=0) {
fwrite (text[0]);
fwrite (text[1]);
fwrite (s);
fwrite (text[i]);
messagebox("Cтрок в файле: "+format(row));
fclose(); // закрываем файл
// добавить путь из переменной s между text[1] и text[2]
}}

(Добавление)
в общем разобрался, если кому интересно то таким образом:

CODE:
string text[100];
string path="C:\include\resource.txt"; // путь к файлу
int row=0; // переменная, в которую запишется количество строк в файле
string s="C:\include\resource2.txt";

if (fopen(path, "r" ) !=0) // если файл открылся
{
for(int i=0; freadline(text[i])!=0; i++)row++; // читаем по строке до конца файла
fclose(); // закрываем файл

messagebox("Cтрок в файле: "+format(row));


if (fopen(path, "w" ) !=0) // если файл открылся
{
fwrite (text[0]);
fwrite (ENDL);
fwrite (text[1]);
fwrite (ENDL);
fwrite (s);
fwrite (ENDL);
for(i=2; i<row; i++) // цикл для всех строк из файла
{
fwrite (text[i]);
fwrite (ENDL);
}
fclose(); // закрываем файл
}
}

(Добавление)
Но вот возникла проблема с кириллицей, как делать запись, чтобы заместо C:\Софт\ отображались русские буквы?
83. Zireael - 31 Декабря, 2020 - 07:37:32 - перейти к сообщению
 Цитата:
чтобы заместо C:\Софт\ отображались русские буквы?

CODE:
string s = "C:\Софт\";
messagebox(utf8toansi(s));
84. Arimor - 31 Декабря, 2020 - 08:23:24 - перейти к сообщению
Zireael , Спасибо а как сделать чтобы при записи fwrite (utf8toansi(s)); текст русский отображался? выдает вопросы заместо кириллицы

Офф топ (Отобразить)
85. Zireael - 31 Декабря, 2020 - 08:44:56 - перейти к сообщению
 Цитата:
а как сделать чтобы при записи fwrite (utf8toansi(s)); текст русский отображался?

С кодировкой файла определитесь. Если он изначально будет в ansi, то не будет никаких проблем. Если в utf8, то придётся конвертировать.
86. Karkun - 23 Января, 2021 - 08:54:56 - перейти к сообщению
подскажите как решить следующюю задачу. есть файл с двумерным массивом в массиве
одни нули массив записан в файл прямоугольником.
CODE:

int i=0, j=0;
int xy[100][100];
for(i=0; i<100; i++)
{
for(j=0; j<100; j++)
{
xy[j][i]=0;
fopen ("c:\1.txt", "a");
fwrite(xy[j][i]);
fclose();
}
fopen ("c:\1.txt", "a");
fwrite(ENDL);
fclose();
}


как можно поменять в этом массиве (именно в файле) часть значений при этом чтобы массив остался в прежнем виде
я пробовал так но это только добавляет в конец массива.
CODE:
for(i=0; i<100; i++)
{
for(j=0; j<100; j++)//j-это у нас х на карте а i- это у
{

mousemove(j+100, i+100);
pause(100);
x=find_coordinates(j+100-27, i+100-51, j+100+24, i+100-34); //находим координату х
y=find_coordinates(j+100+32, i+100-51, j+100+27+50, i+100-34 ); //находим координату y
xy[x][y]=1; //заполняем массив карты
fopen ("c:\1.txt", "a");
fwrite(xy[x][y]);
fclose();
pause(100);
}
}]

я так понимаю нужно как то переписывать массив, но по времени это займет .....
считать массив из файла заменить что нужно, перезаписать массив то есть записывать в файл на каждом шагу смысла нету это нужно сделать по окончании всего цикла. Подскажите есть какието другие варианты?
(Добавление)
еще вопрос можно так делать
CODE:
fopen ("c:\1.txt", "a");
for (i=0; i<500; i++)
{
for (j=0; j<500; j++)
{
fopen ("c:\1.txt", "a");
fread (xy[i][j]);
}
}
fclose();


или так?
CODE:
for (i=0; i<500; i++)
{
for (j=0; j<500; j++)
{
fopen ("c:\1.txt", "a");
fread (xy[i][j]);
fclose();
}
}
87. Zireael - 23 Января, 2021 - 10:01:14 - перейти к сообщению
 Цитата:
есть какието другие варианты?

Создать файл (Отобразить)

Изменить значение (Отобразить)
88. Karkun - 23 Января, 2021 - 14:59:34 - перейти к сообщению
Это надо осознать спасибо.
пока вот так решил
CODE:
int y=0, x=0, i, j;
int xy[600][600];
loadsymbolbase ("C:\Kit_B\Bases\map_1.sib");

loadsymbolbase ("C:\Проект\V_Bot\Base\map.sib");
pause(3000);

//создаем файл массива все координаты ==0 (непроходимы)

for(i=0; i<300; i++)
{
textout(1, 50, 2, "создаем строку"+ format(i)+" ", 0);
for(j=0; j<300; j++)
{
xy[j][i]=0;
}
}


// попиксельно сканируем карту считываем координаты записываем в массив проходимые клетки
for(i=0; i<20; i++)
{
for(j=0; j<20; j++)//j-это у нас х на карте а i- это у
{
x=0; y=0;
textout(1, 200, 2, "сканируем строку "+ format(i)+" ", 0);
mousemove(j+100, i+100);
pause(600);
x=find_coordinates(j+100-27, i+100-51, j+100+24, i+100-34); //находим координату х
y=find_coordinates(j+100+32, i+100-51, j+100+27+50, i+100-34 ); //находим координату y

if ((x>1)&&(y>1))
{
textout(1, 400, 2, "пишем "+format(x)+" : "+format(y)+" ", 0);
xy[x][y]=1; //заполняем массив карты
}
}
}

//записываем полученный массив

fopen ("c:\1.txt", "w");
for(i=0; i<300; i++)
{
textout(1, 300, 2, "Переписываем строку "+format(i)+" в массиве ", 0);
for(j=0; j<300; j++)
{

fwrite(xy[i][j]);
}
fwrite(ENDL);
}


fclose();




А есть возможность как то цвет текста сохраняемого в файл менять?
89. Zireael - 23 Января, 2021 - 15:24:06 - перейти к сообщению
 Цитата:
создаем файл массива все координаты ==0

Заполнить массив можно функцией initialarray.
 Цитата:
А есть возможность как то цвет текста сохраняемого в файл менять?

Тогда файл придётся открывать в каком-то редакторе, который поддерживает подсветку и формат соответствующий должен быть.
90. Karkun - 23 Января, 2021 - 16:07:37 - перейти к сообщению
Спасибо.

Powered by ExBB FM 1.0 Final