Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Как увеличить размер файла на нужное число?

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

1. Martin - 16 Декабря, 2022 - 04:23:48 - перейти к сообщению
Например если делать в ручную я хочу чтобы мой текстовый файл вселил 300б и я 300 раз нажимаю пробел.

А нужно через диалог это сделать
1) Создать текстовый файл
2) Прочитать данные из поля 1 и поля 2 и вычесть поле1- поле2= "нужное число"
3) Создать пробелы в текстовом файле на "нужное число" и сохранить.


Диалоговое окно (Отобразить)
2. Zireael - 16 Декабря, 2022 - 05:11:21 - перейти к сообщению
CODE:
#define WS_VISIBLE 0x10000000
#define WS_CHILD 0x40000000
#define WS_BORDER 0x00800000
#define BS_MULTILINE 0x00002000
#define SS_EDITCONTROL 0x00002000
#define ES_MULTILINE 0x0004
#define ES_WANTRETURN 0x1000
#define ES_AUTOVSCROLL 0x0040
#define ES_AUTOHSCROLL 0x0080
#define TRUE 1
#define WM_SETFONT 0x0030
#define RUSSIAN_CHARSET 204

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll");
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll");
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll");
external(INT, "GetWindowRect", "GetWindowRect", "User32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "DeleteFile", "DeleteFileA", "kernel32.dll");
int h_font;
string rn = formatic(13)+formatic(10);
int dialogPosX_0 = 750, dialogPosY_0 = 322;
int button0[1];
int flag_button0[1] = { 0 };

int edit0[2];
string text_edit0[2];
text_edit0[0] = "Размер"; text_edit0[1] = "0";
int static0[1];

createdialog(0);
showdialog(0, "Диалог0", dialogPosX_0, dialogPosY_0, 222, 138, 4, 1);

string path = "D:\NewFile.txt"; // путь к файлу

loop()
{
// тут нужный код
if(flag_button0[0]) // если нажата кнопка
{
flag_button0[0] = 0; // обнулить флаг нажатия кнопки

int num1 = formatsn(text_edit0[0]); // получить число из первого поля
int num2 = formatsn(text_edit0[1]); // получить число из второго поля

// проверка на корректность чисел
if(num1<0)
{
messagebox("В первом поле некорректное число");
continue;
}
if(num2<0)
{
messagebox("Во втором поле некорректное число");
continue;
}

if(num1<=num2)
{
messagebox("Число в первом поле меньше или равно числу во втором");
continue;
}
///////////

if(fopen(path, "wb")) // открыть файл для записи
{
new char array[num1-num2]; // создать массив на нужное количество байт
initialarray(#array[0], 32); // заполнить массив пробелами

fwriteb(#array[0], num1-num2); // записать массив файл
fclose(); // закрыть файл

delete array; // удалить массив
messagebox("Создан файл размером: "+format(num1-num2) + " байт.");
}
}
sleep(10);
}
end_0:;

function getmessage(0, WM_CREATE)
{
int i;
h_font = CreateFont(-21, 0, 0, 0, 700, 0, 0, 0, RUSSIAN_CHARSET, 0, 0, 0, 0, "Arial Narrow");
button0[0] = CreateWindow(0, "BUTTON", "Создать файл", WS_VISIBLE | WS_CHILD, 8, 56, 200, 40, gethwnd(0), 0, 0, 0);
edit0[0] = CreateWindow(0, "EDIT", text_edit0[0], WS_VISIBLE | WS_CHILD | WS_BORDER, 8, 16, 80, 32, gethwnd(0), 0, 0, 0);
edit0[1] = CreateWindow(0, "EDIT", text_edit0[1], WS_VISIBLE | WS_CHILD | WS_BORDER, 128, 16, 80, 32, gethwnd(0), 0, 0, 0);
static0[0] = CreateWindow(0, "STATIC", "-", WS_VISIBLE | WS_CHILD, 104, 16, 16, 32, gethwnd(0), 0, 0, 0);
for(i=0; i<1; i++)sendmessage(WM_SETFONT, h_font, TRUE, formatiw(button0[i]));
for(i=0; i<2; i++)sendmessage(WM_SETFONT, h_font, TRUE, formatiw(edit0[i]));
for(i=0; i<1; i++)sendmessage(WM_SETFONT, h_font, TRUE, formatiw(static0[i]));
}

function getmessage(0, WM_COMMAND)
{
int i;
char c_text_edit[999];
for(i=0; i<1; i++) // обработка нажатий кнопок
{
if(message.lparam == button0[i])
{
if(flag_button0[i])flag_button0[i] = 0;
else flag_button0[i] = 1;
return;
}
}
for(i=0; i<2; i++) // обработка нажатий edit
{
if(message.lparam == edit0[i])
{
GetWindowText(edit0[i], address(#c_text_edit[0]), sizearray(c_text_edit));
text_edit0[i] = format(#c_text_edit[0]);
return;
}
}
}

function getmessage(0, WM_CLOSE)
{
DeleteObject(h_font);
goto global end_0; // переход в метке
// close(); // закрыть кибор
}
3. Martin - 16 Декабря, 2022 - 06:18:43 - перейти к сообщению
Zireael , Спасибо, а как можно добавить в буфер эти пробелы? У меня возвращает число строк
CODE:
int f=initialarray(#array[0], 32); // заполнить массив пробелами
writeclipboard(f);
4. Zireael - 16 Декабря, 2022 - 17:29:17 - перейти к сообщению
 Цитата:
как можно добавить в буфер эти пробелы?

CODE:
char array[99]; // создать массив
initialarray(#array[0], 32); // заполнить пробелами
writeclipboard(format(#array[0], sizearray(array))); // записать в буфер

Powered by ExBB FM 1.0 Final