stepik1 |
Отправлено: 18 Декабря, 2019 - 22:58:12
|
Прохожий
Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2019
Репутация: 0
|
Как кушать это поле?
CODE:int pos_size_edit0[1][4];
string text_edit0[1];
pos_size_edit0[0][0]=6; pos_size_edit0[0][1]=3; pos_size_edit0[0][2]=233; pos_size_edit0[0][3]=668;
text_edit0[0]="Поле 0";
//////////
createdialog(0, EDIT, #pos_size_edit0[0][0], #text_edit0[0]);
//////////
showdialog(0, "Диалог", 410, 16, 250, 704, 1, 1);
//////////
sleep(10000);
fopen("test.txt", "w");
fwrite(text_edit0[0]);
fclose();
loop() sleep(10);//Убрать после теста
Берем txt, пишем туда с переводом строки (ENTER)
1
2
3
4
5
копируем, вставляем в поле 0 - все в одну строку - 12345, ох**ваем, ждем записи, открывает test.txt
все гуд
1
2
3
4
5.
Ладно, хрен с ним.
Берем и в поле 0 ручками пишем
1
2
3
4
5
ждем, открываем test.txt и ох**ваем:
1
2
3
4
5
Так и как это кушать? Как читать?
Вставляем список в поле 0.
Как перевести его в массив построчно?
А если массив уже есть? Как его вывести визуально в поле 0? Дабы скопировать, удалить...
Пока вижу реализацию через файлик в темпе:
записал поле в файл, прочитал, убрал пустые строки, обработал, возвраты получил в массив, массив (как?) перевел в 1 переменную в строку с переводами...
Может как то легче все это? |
|
|
stepik1 |
Отправлено: 18 Декабря, 2019 - 23:45:34
|
Прохожий
Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2019
Репутация: 0
|
Zireael пишет: Непонятно что вообще пытаетесь сделать. Есть диалог с Edit, дальше какие действия?
В смысле? Я вроде по русски..
Ну ладно.
Есть поле с Edit.
Пользователь вставляет туда список.
line1
line2
line3
line4
Мне нужно С КАЖДОЙ СТРОКОЙ В ОТДЕЛЬНОСТИ поработать.Считать все это в массив ПОСТРОЧНО, наконец. КАК?
Дальше. Есть у меня массив, который я из файла прочитал ПОСТРОЧНО вида rline[1]
Как мне в Edit записать этот массив ПОСТРОЧНО, чтоб ctrl+a ctrl+c ctrl+v куда надо.(Отредактировано автором: 18 Декабря, 2019 - 23:46:14) |
|
|
Zireael |
Отправлено: 19 Декабря, 2019 - 00:39:10
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
code (Отобразить)CODE:int pos_size_edit0[1][4];
string text_edit0[1];
pos_size_edit0[0][0]=6; pos_size_edit0[0][1]=3; pos_size_edit0[0][2]=233; pos_size_edit0[0][3]=668;
text_edit0[0]="Поле 0";
int pos_size_button0[1][4], flag_button0[1];
string text_button0[1];
pos_size_button0[0][0]=10; pos_size_button0[0][1]=680; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Нажать";
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0]);
showdialog(0, "Диалог", 410, 16, 250, 744, 1, 1);
// для примера массив строк
string rline[3];
rline[0]="Строка1";
rline[1]="Строка2";
rline[2]="Строка3";
string str="";
for(int i=0; i<3; i++)str=str+rline[i]+formatic(13)+formatic(10); // собрать массив в 1 строку с переносами
messagebox(str);
text_edit0[0]=str; // записать строку в Edit
string s[999];
loop()
{
if(flag_button0[0]) // если нажата кнопка
{
flag_button0[0]=0; // обнуляем флаг нажатия кнопки
int count=regexsearch(sizearray(s), #s[0], text_edit0[0], "[^\r\n]+", MULTILINE); // найти все строки и записать в массив
messagebox("Всего строк: "+format(count));
//messagebox(s[0]); // первая строка
//messagebox(s[1]); // вторая
//messagebox(s[2]); // третья и т. д.
// обычно цикл используют
for(int j=0; j<count; j++)
{
messagebox(s[j]);
// нужные действия со строкой
}
}
sleep(10);//Убрать после теста
} |
|
|
stepik1 |
Отправлено: 20 Декабря, 2019 - 16:00:18
|
Прохожий
Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2019
Репутация: 0
|
Zireael пишет: code (Отобразить)CODE:int pos_size_edit0[1][4];
string text_edit0[1];
pos_size_edit0[0][0]=6; pos_size_edit0[0][1]=3; pos_size_edit0[0][2]=233; pos_size_edit0[0][3]=668;
text_edit0[0]="Поле 0";
int pos_size_button0[1][4], flag_button0[1];
string text_button0[1];
pos_size_button0[0][0]=10; pos_size_button0[0][1]=680; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Нажать";
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0]);
showdialog(0, "Диалог", 410, 16, 250, 744, 1, 1);
// для примера массив строк
string rline[3];
rline[0]="Строка1";
rline[1]="Строка2";
rline[2]="Строка3";
string str="";
for(int i=0; i<3; i++)str=str+rline[i]+formatic(13)+formatic(10); // собрать массив в 1 строку с переносами
messagebox(str);
text_edit0[0]=str; // записать строку в Edit
string s[999];
loop()
{
if(flag_button0[0]) // если нажата кнопка
{
flag_button0[0]=0; // обнуляем флаг нажатия кнопки
int count=regexsearch(sizearray(s), #s[0], text_edit0[0], "[^\r\n]+", MULTILINE); // найти все строки и записать в массив
messagebox("Всего строк: "+format(count));
//messagebox(s[0]); // первая строка
//messagebox(s[1]); // вторая
//messagebox(s[2]); // третья и т. д.
// обычно цикл используют
for(int j=0; j<count; j++)
{
messagebox(s[j]);
// нужные действия со строкой
}
}
sleep(10);//Убрать после теста
}
Все гуд. Последний вопрос - как в поле вставить строк больше чем оно вмещает?
Или это не реализовано и не будет?
Т.к. в данный момент ни в ручную ни вставкой не работает.(Отредактировано автором: 20 Декабря, 2019 - 16:02:26) |
|
|
Zireael |
Отправлено: 20 Декабря, 2019 - 16:40:26
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как в поле вставить строк больше чем оно вмещает?
Версия 5.50 Получение и обработка сообщений
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define ES_AUTOHSCROLL 128
#define ES_AUTOVSCROLL 64
#define ES_MULTILINE 4
#define ES_WANTRETURN 4096
#define WS_VSCROLL 2097152
#define WS_HSCROLL 1048576
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll");
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll");
int edit0, button0, button1;
char text_edit[999999];
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
loop()
{
// тут можно добавить нужные действия
sleep(10);
}
function getmessage(0, WM_CREATE)
{
// добавление контролов
// Edit
edit0=CreateWindow(0, "EDIT", "Поле0", WS_VISIBLE | WS_CHILD | WS_BORDER | WS_VSCROLL | WS_HSCROLL |
ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_MULTILINE | ES_WANTRETURN, 10, 10, 150, 140, gethwnd(0), 0, 0, 0);
// 10, 10 - позиция окна
// 150, 120 - размеры окна
// button
button0=CreateWindow(0, "BUTTON", "Получить текст", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 155, 130, 24, gethwnd(0), 0, 0, 0);
button1=CreateWindow(0, "BUTTON", "Изменить текст", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 190, 130, 24, gethwnd(0), 0, 0, 0);
}
function getmessage(0, WM_COMMAND)
{
// обработка сообщений контролов
if(message.lparam==button0) // если нажата кнопка 'Получить текст'
{
// нужные действия когда нажата кнопка
GetWindowText(edit0, address(#text_edit[0]), sizearray(text_edit)); // получить текст из Edit
messagebox(format(#text_edit[0]));
return;
}
if(message.lparam==button1) // если нажата кнопка 'Изменить текст'
{
SetWindowText(edit0, "Текст в Edit"); // изменить текст в окне Edit
return;
}
} |
|
|
|