Я пытаюсь использовать расширение форм в приложении n (n) curses, и мне трудно получить введенные данные для обработки. Документация формы упоминает функцию:Получение данных из формы (n) curses
char *field_buffer(FIELD *field, /* field to query */
int bufindex); /* number of buffer to query */
но предупреждает:
Вызов field_buffer() на поле в данный момент не выбран для ввода будет возвращать правильное значение. Вызов field_buffer() в поле , выбранном в данный момент для ввода, может не обязательно указывать правильное поле значение буфера, поскольку введенные данные необязательно копируются в буфер нуль перед проверкой проверки на выход. Чтобы гарантировать, что возвращаемое значение буфера отражает реальность на экране, вызовите field_buffer() либо (1) в процедуре проверки проверки выхода поля, (2) из поля , либо с помощью кнопок инициализации или прекращения формы, либо (3) просто после запроса запрос REQ_VALIDATION обрабатывается драйвером форм.
Это действительно так.
Мой сценарий:
- создать форму и поля
- процесс ввода данных пользователем
- когда Enter ударен, формируют данные процесса и форма выхода
В соответствии с документацией, получение данных буфера из не выбранных полей является правильным, но данные из конечного поля не являются (поскольку это поле все еще выбрано и не завершено).
Я не могу видеть из документации, как принудительно прекратить действие поля (или принудительное обновление содержимого буфера).
Без какой-либо примерной программы, которая демонстрирует поведение, трудно дать совет. В источниках ncurses есть несколько тестовых программ, которые используют библиотеку форм. –