Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 3.09 Доработка чтения и записи в файл. Работа в бинарном режиме

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

1. Kibor - 27 Ноября, 2013 - 19:50:53 - перейти к сообщению
Доработаны функции чтения и записи в файл.
Посмотреть описание работы с файлами в Кибор: чтение запись в текстовый файл

Реализована работа с бинарными файлами.

Для открытия файла в бинарном режиме чтения необходимо вызвать fopen с ключом "rb".
fopen ("D:\calc.exe", "rb");

Для чтения в бинарном режиме добавлена функция freadb

Синтаксис:
char preiemnik_a[999999];
freadb(#preiemnik_a[0], 999999);

Первый параметр указатель на масив char в который будет чтение. Второй количество читаемых байт. Если файл имеет меньший размер, прочитается столько сколько имеет файл.
Значение возвращаемое - количество прочитанных байт. Если второй параметр больше размера файла - вернет количество байт равное размеру файла.


Для открытия файла в бинарном режиме записи необходимо вызвать fopen с ключом "wb" или "ab".

Для записи fwriteb

Синтаксис:
fwriteb(#preiemnik_a[0], 122465);
Первый параметр указатель на масив char данный из которого надо записать. Второй количество записываемых байт байт.

fwriteb(preiemnik_a[5]);
Параметр принимаемый - char;

Пример чтения и записи с копированием exe файла:
CODE:
char preiemnik_a[999999];
int g=0;
if (fopen ("D:\calc.exe", "rb")!=0)
{
g=freadb(#preiemnik_a[0], 999999);
fclose();
}
messagebox (g);
int nn=0;
if (fopen ("D:\calc1.exe", "wb")!=0)
{
/*
r: if (nn<g)//Запись побайтово//Займет время..
{
fwriteb(preiemnik_a[nn]);
nn++;
goto r;
}
*/
fwriteb(#preiemnik_a[0], g);//Запись по указателю на масив char

fclose();
}


Пример чтения текстового файла сохраненного в юникоде
CODE:
char preiemnik[999999];
int g=0;
if (fopen ("C:\Русс текст в юникоде.txt", "rb")!=0)
{
g=freadb(#preiemnik[0], 999999);
fclose();
}

string T="";
int i;
for (int n=2; n<g-1; n=n+2)
{
if (preiemnik[n]==0) goto er;
i=codhexi(#preiemnik[n], 2)-848;
if (i==-835){T=T+formatic(13)+formatic(10); n=n+2;}
else T=T+formatic(i);

}
er:;
messagebox (T);
2. Albaz - 27 Ноября, 2013 - 21:38:23 - перейти к сообщению
Здорово
Прогресс! )))
а можно реализовать нечто:
Для массового копирования, напрмер
CODE:
fopen ("D:\*.exe", "rb");

Создать папку?
Переименовать файловый объект?
И если вдруг приспичит копировать директорию со всеми файлами и вложенными папками?
3. Kibor - 28 Ноября, 2013 - 20:00:52 - перейти к сообщению
Тут действительно можно воспользоваться командной строкой значительно расширив возможности и такие задачи решать через нее.

Пример который создаст папку на диске 1111111111 и скопирует в нее файл cacl.exe:

CODE:
win w;
char tx[9999];
initial();


//Команды
vvod("md c:\1111111111");
vvod("copy c:\windows\system32\calc.exe c:\1111111111\calc.exe");
////////.................................................



key("exit");
key(RETURN);

/////////////////////////////////////

function initial()
{
start("C:\WINDOWS\system32\cmd.exe");
a: w=window (-1, "ConsoleWindowClass", -1);if (w==0) {sleep(50); goto a;}
sendlanguage("00000409", w);
}

function vvod(string cmnda)
{
strcpy(#tx[0], cmnda);
int sz=size(#tx[0]);
int sh;
int n=0;
t: if (n<sz)
{
sh=0;
if (tx[n]==':' || tx[n]=='_'){keydown(SHIFT);sh=1;}//Тут символы надо для набора которых нажать шифт
key(tx[n]);
if (sh==1)keyup(SHIFT);
n++;
goto t;
}
key(RETURN);
}
4. Albaz - 10 Января, 2014 - 11:06:16 - перейти к сообщению
 Kibor пишет:
Доработаны функции чтения и записи в файл.

А как бы еще возвращение каретки?
5. Kibor - 10 Января, 2014 - 11:37:14 - перейти к сообщению
 Albaz пишет:
возвращение каретки?

Перевод строки?

Если перевод строки, то это будет 2 байта:
\r\n или 13 10
CODE:
char stperev[2];
stperev[0]=formatic(13);
stperev[1]=formatic(10);


Эти байты надо записать в место где надо перевести строку.
6. Dantes3000 - 23 Мая, 2019 - 15:22:52 - перейти к сообщению
Вылетает кибор (Отобразить)


Не вылетает (Отобразить)


почему?
7. Kibor - 23 Мая, 2019 - 16:31:37 - перейти к сообщению
 Dantes3000 пишет:
Вылетает кибор

Устранил.

Powered by ExBB FM 1.0 Final