Реализовать работу стандартного предиката чтения строки с помощью цикла (Visual Prolog 5.2)

Узнай цену своей работы

Формулировка задачи:

Не поможете, что то не работает. Нужно реализовать работу стандартного предиката чтения строки с помощью цикла. В общем вводим списки, а выводим строку.
Листинг программы
  1. sp_st(SLIST,INTEGER,INTEGER)
  2. clauses
  3. sp_st([X|Y],X1,R):-
  4. concat(X1,X,X2),
  5. sp_st(Y,X2,R).
вот обработка кнопок:
Листинг программы
  1. %BEGIN Циклы, idc_ok _CtlInfo
  2. dlg_циклы_eh(_Win,e_Control(idc_ok,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
  3. El = win_GetCtlHandle (_Win, idc_циклы_1),
  4. Element=win_GetText (El),
  5. Element<>"",
  6. R= win_GetCtlHandle (_Win,lbox),
  7. lbox_Add(R, Element),
  8. SL =lbox_GetAll (R),
  9. !.
  10. %END Циклы, idc_ok _CtlInfo
  11. %BEGIN Циклы, idc_построить_строку _CtlInfo
  12. dlg_циклы_eh(_Win,e_Control(idc_построить_строку,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
  13. sp_st(SL,"",R),
  14. dlg_Note ("Результат",R),
  15. !.
  16. %END Циклы, idc_построить_строку _CtlInfo
я так понимаю в предикате sp_st должно быть Ilist,String,String. С помощью concat мы преобразуем в строку, вот только почему это не выводится в dlg_note?

Решение задачи: «Реализовать работу стандартного предиката чтения строки с помощью цикла (Visual Prolog 5.2)»

textual
Листинг программы
  1.  %BEGIN Циклы, idc_ok _CtlInfo
  2.   dlg_циклы_eh(_Win,e_Control(idc_ok,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
  3.     El = win_GetCtlHandle (_Win, idc_циклы_1),
  4.     Element=win_GetText (El),
  5.     Element<>"",
  6.     R= win_GetCtlHandle (_Win,lbox),
  7.     lbox_Add(R, Element),
  8.     !.
  9. %END Циклы, idc_ok _CtlInfo
  10.  
  11. %BEGIN Циклы, idc_построить_строку _CtlInfo
  12.   dlg_циклы_eh(_Win,e_Control(idc_построить_строку,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
  13.     R= win_GetCtlHandle (_Win,lbox),
  14.     SL =lbox_GetAll (R),
  15.     sp_st(SL,"",R),
  16.     dlg_Note ("Результат",R),
  17.     !.
  18. %END Циклы, idc_построить_строку _CtlInfo

Объяснение кода листинга программы

В этом коде реализованы два предиката:

  1. dlg_циклы_eh — отвечает за цикл обработки элементов в диалоговом окне. У этого предиката четыре аргумента: — _Win — ссылка на окно диалога. — _CtrlType — тип контрола. — _CtrlWin — дескриптор контрола. — _CtlInfo — информация о контроле. В этом предикате реализован цикл, который обрабатывает каждый элемент в списке контролов диалогового окна.
  2. dlg_Note — выводит сообщение в диалоговом окне. У этого предиката два аргумента: — Текст — текст сообщения. — Handle — дескриптор окна диалога. В этом предикате используется функция lbox_GetAll, которая получает все элементы из списка, и функция sp_st, которая строит строку из списка элементов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы