Martin |
Отправлено: 16 Декабря, 2022 - 12:23:48
|
Мастер
Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022
Репутация: 1
|
Например если делать в ручную я хочу чтобы мой текстовый файл вселил 300б и я 300 раз нажимаю пробел.
А нужно через диалог это сделать
1) Создать текстовый файл
2) Прочитать данные из поля 1 и поля 2 и вычесть поле1- поле2= "нужное число"
3) Создать пробелы в текстовом файле на "нужное число" и сохранить.
Диалоговое окно (Отобразить)
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);
loop()
{
// тут нужный код
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(); // закрыть кибор
}
(Отредактировано автором: 16 Декабря, 2022 - 12:28:59) |
|
|
Zireael |
Отправлено: 16 Декабря, 2022 - 13:11:21
|
Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
|
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(); // закрыть кибор
} |
|
|
Zireael |
Отправлено: 17 Декабря, 2022 - 01:29:17
|
Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как можно добавить в буфер эти пробелы?
CODE:char array[99]; // создать массив
initialarray(#array[0], 32); // заполнить пробелами
writeclipboard(format(#array[0], sizearray(array))); // записать в буфер (Отредактировано автором: 17 Декабря, 2022 - 01:29:45) |
|
|
|