2015-01-23 3 views
0

Я пытаюсь использовать расширение форм в приложении 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 обрабатывается драйвером форм.

Это действительно так.

Мой сценарий:

  1. создать форму и поля
  2. процесс ввода данных пользователем
  3. когда Enter ударен, формируют данные процесса и форма выхода

В соответствии с документацией, получение данных буфера из не выбранных полей является правильным, но данные из конечного поля не являются (поскольку это поле все еще выбрано и не завершено).

Я не могу видеть из документации, как принудительно прекратить действие поля (или принудительное обновление содержимого буфера).

+0

Без какой-либо примерной программы, которая демонстрирует поведение, трудно дать совет. В источниках ncurses есть несколько тестовых программ, которые используют библиотеку форм. –

ответ

0

Я столкнулся с тем же самым предметом прямо сейчас и только что понял. Я могу просто сфокусировать следующее поле в форме перед получением значений через field_buffer. Поэтому, когда вводится ввод, я вызываю form_driver (form, REQ_NEXT_FIELD); а затем буфер для текущего активного поля корректно обновляется, когда я обращаюсь к значению с помощью field_buffer().

Смежные вопросы