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

Страниц (12): [1] 2 3 4 5 6 7 8 9 ... » В конец
 

1. Kibor - 04 Августа, 2013 - 18:24:36 - перейти к сообщению
Добавлены функции для работы с текстовыми файлами. Чтение и запись.

Запись файлов Excel в формате .xlsx - Рабочий пример как записывать файлы Excel в формате .xlsx


====================================================

fopen - открывает файл. Принимает два параметра. Первый string (путь к файлу), второй string или char:
w - открыть файл для записи. Если такого файла нет он создается. Если есть он перезапишется.
a - открыть файл для записи. Если такого файла нет он создается. Если есть он будет дописываться.
r - открыть файл для чтения.

Синтаксис:
fopen ("c:\5.txt", "w");
Возвращает не 0 при удачном открытие..

====================================================

fclose - закрывает открытый файл.

Синтаксис:
fclose ();

====================================================

fwrite - записывает в открытый файл. Принимает в виде параметра string, char, double, int или ENDL - указание перевести строку.

Синтаксис:
fwrite ("Привет");
fwrite (5.25);
fwrite (ENDL);//перевести строку
fwrite ("новая строка");

====================================================

fread - читает с открытого файла. Принимает в виде параметра string, char, double, int.
Для string, double и int границами читаемого блока с файла являются начало, конец файла, пробел и перевод строки.
char читает все символы по одному считая пробелы.

Синтаксис:
int a;
fread (a);
Возвращает 1 если не конец файла, 0 если конец файла, -1 если в переменную double или int записывается не число.

====================================================

freadline - читает строку с открытого файла. Принимает в виде параметра string.

Синтаксис:
string a;
freadline (a);
Возвращает 1 если не конец файла, 0 если конец файла, -1 если в параметр не string.

====================================================

freadlineall - считывание за один вызов указанное количество строк с текстового файла или пока не будет достигнут конец файла.
Синтаксис:
CODE:
freadlineall(#stroka[0], 2000000);

Параметр первый = Указатель на массив string, в который будут считываться строки
Второй - количество строк которое надо считать.
Указывать можно больше чем есть в наличие. В таком случае будет считаен весь файл и функция завершит работу.
Если в файле больше строк чем выделен массив, это приведет к ошибке в программе.

Возвращает реально прочитанное количество строк.

Пример
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]);
}


====================================================


Пример записи и чтения с файла
CODE:
//Инициализируем смешанные типы переменных
string a[8];
char b=' ';
double e=2.02;

a[0]="Демонстрация";
a[1]="записи";
a[2]="и";
a[3]="чтения";
a[4]="в";
a[5]="файл.";
a[6]="Кибор";
a[7]="версия";

//========================================================

//открываем файл для записи "w". Если файл существует он будет перезаписан.
//Для добавления в конец надо открывать с "a"
if (fopen ("c:\5.txt", "w")!=0)
{//если открылся
fwrite(a[0]);fwrite(b);//записываем в файл
fwrite(a[1]);fwrite(b);
fwrite(a[2]);fwrite(b);
fwrite(a[3]);fwrite(b);
fwrite(a[4]);fwrite(b);
fwrite(a[5]);

fwrite(ENDL);//записываем в файл перевод строки

fwrite(a[6]);fwrite(b);
fwrite(a[7]);fwrite(b);
fwrite(e);

fclose();//закрываем файл
}

//========================================================

string preiemnik_a[8];
double preiemnik_e;

//Чтение смешанными типами
if (fopen ("c:\5.txt", "r")!=0)//открываем файл для чтения "r"
{//если открылся
fread(preiemnik_a[0]);//чтение одного слова
fread(preiemnik_a[1]);
fread(preiemnik_a[2]);
fread(preiemnik_a[3]);
fread(preiemnik_a[4]);
fread(preiemnik_a[5]);
fread(preiemnik_a[6]);
fread(preiemnik_a[7]);

fread(preiemnik_e);//чтение числа double

//Вывод формотированной строки
messagebox(preiemnik_a[0]+" "+preiemnik_a[1]+" "+
preiemnik_a[2]+" "+preiemnik_a[3]+" "+
preiemnik_a[4]+" "+preiemnik_a[5]+" "+preiemnik_a[6]+" "+preiemnik_a[7]+" "+format(preiemnik_e));

fclose();//закрываем файл
}

//========================================================

string preiemnik;

//Чтение по целой строке
if (fopen ("c:\5.txt", "r")!=0)//открываем файл для чтения "r"
{//если открылся
l:if (freadline(preiemnik)!=0)//Читаем по целой строке пока не конец файла
{
messagebox(preiemnik);
goto l;
}
fclose();//закрываем файл
}

//========================================================

//Чтение по слову (пробелы пропускаются)
if (fopen ("c:\5.txt", "r")!=0)//открываем файл для чтения "r"
{//если открылся
l1:if (fread(preiemnik)!=0)
{
messagebox(preiemnik);
goto l1;
}
fclose();//закрываем файл
}

//========================================================

char pr_с;

//Чтение по символу
if (fopen ("c:\5.txt", "r")!=0)//открываем файл для чтения "r"
{//если открылся
l2:if (fread(pr_с)!=0)
{
messagebox(pr_с);
goto l2;
}
fclose();//закрываем файл
}
2. baracuda - 05 Августа, 2013 - 23:38:46 - перейти к сообщению
Полезный функционал +
3. ArtChemist - 06 Августа, 2013 - 01:53:15 - перейти к сообщению
День добрый, програмка ваша мне понравилась, без труда написал пару скриптов облегчивших мне жизнь) Но я не программист и в других подобных кликерах ни когда не работал, посему прошу объяснить возможности использования данного нововведения желательно с примером, вдруг пригодится.
4. Kibor - 06 Августа, 2013 - 03:19:38 - перейти к сообщению
 ArtChemist пишет:
прошу объяснить возможности использования данного нововведения желательно с примером

Ну к примеру скрипт занимается сбором информации на сайтах, ее можно легко сохранить в файл.
Или наоборот, скрипту нужна вводная информация с чем надо работать, к примеру список инет адресов. Тут и можно просто считать их с файла.
Пример как использовать есть вверху. Когда вам понадобится работа с файлами вам станет все понятнее.
5. Albaz - 06 Января, 2014 - 23:14:34 - перейти к сообщению
Еще бы не плохо, еслиб прочтинное с файла помещеть в буфер обмена и потом вставлять в нужные поля программ.
6. Barabachka - 07 Января, 2014 - 04:10:37 - перейти к сообщению
 Albaz пишет:
Еще бы не плохо, еслиб прочтинное с файла помещеть в буфер обмена и потом вставлять в нужные поля программ.

Это можно элементарно сделать кодом.
7. Kibor - 07 Января, 2014 - 04:24:28 - перейти к сообщению
 Albaz пишет:
Еще бы не плохо, еслиб прочтинное с файла помещеть в буфер обмена и потом вставлять в нужные поля программ.


writeclipboard - запись в буфер обмена

Вставлять в поля с буфера обмена можно хоть ctrl+v, хоть по указателю на поле win с помощью разных функций Кибор.

Код простой
CODE:
//Чтение по целой строке
if (fopen ("C:\22.txt", "r")!=0)//открываем файл для чтения "r"
{//если открылся
string preiemnik;
tt:if (freadline(preiemnik)!=0)//Читаем по целой строке пока не конец файла
{
writeclipboard(preiemnik);
messagebox ("В буфере обмена текст: "+preiemnik);
//Тут вставляем текст куда надо ctrl+v
goto tt;
}
fclose();//закрываем файл
}
8. Albaz - 10 Января, 2014 - 11:01:40 - перейти к сообщению
 Kibor пишет:



freadline - читает строку с открытого файла. Принимает в виде параметра string.

Синтаксис:
string a;
freadline (a);
Возвращает 1 если не конец файла, 0 если конец файла, -1 если в параметр не string.
[/code]


А как бы с переводом каретки назад?
9. Kachan - 01 Марта, 2016 - 15:13:43 - перейти к сообщению
Вот у меня есть такой код:
CODE:
function writelog()
{
resettextout(1);
textout(1, 10, 80, text[0], 1);
textout(2, 10, 100, text[1], 1);
textout(3, 10, 120, text[2], 1);
textout(4, 10, 140, text[3], 1);
textout(5, 10, 160, text[4], 1);
textout(6, 10, 180, text[5], 1);
textout(7, 10, 200, text[6], 1);
textout(8, 10, 220, text[7], 1);
textout(9, 10, 240, text[8], 1);
textout(10, 10, 260, text[9], 1);
text[9] = text[8];
text[8] = text[7];
text[7] = text[6];
text[6] = text[5];
text[5] = text[4];
text[4] = text[3];
text[3] = text[2];
text[2] = text[1];
text[1] = text[0];
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if(fopen ("D:\Avtoregbot lite version\log.txt", "w")!=0)
{
fwrite(ENDL);
fwrite(Hour);
fwrite(":");
fwrite(Minute);
fwrite(":");
fwrite(Second);
fwrite(" - ");
fwrite(text[0]);
fwrite(ENDL);
fclose();
}
}

К сожалению он записывает только одну строку в файл которая последняя была записана в переменную text[0];
Выглядит вот так:

Как сделать так, что бы строчка сохранялась и записывалась новая.
Надо что бы выглядело так:
10. Kibor - 01 Марта, 2016 - 15:33:28 - перейти к сообщению
Kachan ,
 Kibor пишет:
w - открыть файл для записи. Если такого файла нет он создается. Если есть он перезапишется.
a - открыть файл для записи. Если такого файла нет он создается. Если есть он будет дописываться.
r - открыть файл для чтения.

Powered by ExBB FM 1.0 Final