我尝试在(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)在a之后 REQ_VALIDATION请求已由表单驱动程序处理。
事实确实如此。
我的情景是:
根据文档,从非选定字段中检索缓冲区数据是正确的,但最终字段中的数据不是(因为该字段仍处于选中状态且未终止)。
我无法从文档中看到如何强制终止字段(或强制更新缓冲区内容)。
答案 0 :(得分:0)
我现在面对同样的事情,只是想通过field_buffer获取值之前我可以在表单中关注下一个字段。所以当按下enter时我调用form_driver(form,REQ_NEXT_FIELD);当我使用field_buffer()访问该值时,正确更新当前活动字段的缓冲区。
答案 1 :(得分:0)
您可能想调用
form_driver(form, REQ_VALIDATION);
在处理表单内容之前。这还将验证当前字段并将其内容提交到缓冲区。