Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: Добавлены файловые операции (чтение запись в текстовый файл)
Dantes3000
Отправлено: 10 Марта, 2020 - 21:31:09
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016  
Репутация: 58




konctantin777 , pathfolder() возвращает путь к папке, откуда запустился ехе
 
 Top
Arimor
Отправлено: 31 Декабря, 2020 - 14:30:13
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 125
Дата рег-ции: Сент. 2020  
Репутация: 1




Пытался пытался так и не хватило мозгов как добавить данные из переменной между строк.
Ниже код можно ли как то между строк 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:\Софт\ отображались русские буквы?

(Отредактировано автором: 31 Декабря, 2020 - 14:35:07)

 
 Top
Zireael
Отправлено: 31 Декабря, 2020 - 15:37:32
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
чтобы заместо C:\Софт\ отображались русские буквы?

CODE:
string s = "C:\Софт\";
messagebox(utf8toansi(s));
 
 Top
Arimor
Отправлено: 31 Декабря, 2020 - 16:23:24
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 125
Дата рег-ции: Сент. 2020  
Репутация: 1




Zireael , Спасибо а как сделать чтобы при записи fwrite (utf8toansi(s)); текст русский отображался? выдает вопросы заместо кириллицы

Офф топ (Отобразить)

(Отредактировано автором: 31 Декабря, 2020 - 16:29:44)

 
 Top
Zireael
Отправлено: 31 Декабря, 2020 - 16:44:56
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
а как сделать чтобы при записи fwrite (utf8toansi(s)); текст русский отображался?

С кодировкой файла определитесь. Если он изначально будет в ansi, то не будет никаких проблем. Если в utf8, то придётся конвертировать.
 
 Top
Karkun
Отправлено: 23 Января, 2021 - 16:54:56
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 82
Дата рег-ции: Март 2019  
Репутация: 0




подскажите как решить следующюю задачу. есть файл с двумерным массивом в массиве
одни нули массив записан в файл прямоугольником.
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();
}
}
 
 Top
Zireael
Отправлено: 23 Января, 2021 - 18:01:14
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
есть какието другие варианты?

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

Изменить значение (Отобразить)
 
 Top
Karkun
Отправлено: 23 Января, 2021 - 22:59:34
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 82
Дата рег-ции: Март 2019  
Репутация: 0




Это надо осознать спасибо.
пока вот так решил
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();




А есть возможность как то цвет текста сохраняемого в файл менять?
 
 Top
Zireael
Отправлено: 23 Января, 2021 - 23:24:06
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
создаем файл массива все координаты ==0

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

Тогда файл придётся открывать в каком-то редакторе, который поддерживает подсветку и формат соответствующий должен быть.
 
 Top
Karkun
Отправлено: 24 Января, 2021 - 00:07:37
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 82
Дата рег-ции: Март 2019  
Репутация: 0




Спасибо.
 
 Top
Страниц (12): В начало « 4 5 6 7 8 [9] 10 11 12 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by