Реализовать работу стандартного предиката чтения строки с помощью цикла (Visual Prolog 5.2)
Формулировка задачи:
Не поможете, что то не работает. Нужно реализовать работу стандартного предиката чтения строки с помощью цикла. В общем вводим списки, а выводим строку.
вот обработка кнопок:
Листинг программы
- sp_st(SLIST,INTEGER,INTEGER)
- clauses
- sp_st([X|Y],X1,R):-
- concat(X1,X,X2),
- sp_st(Y,X2,R).
Листинг программы
- %BEGIN Циклы, idc_ok _CtlInfo
- dlg_циклы_eh(_Win,e_Control(idc_ok,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
- El = win_GetCtlHandle (_Win, idc_циклы_1),
- Element=win_GetText (El),
- Element<>"",
- R= win_GetCtlHandle (_Win,lbox),
- lbox_Add(R, Element),
- SL =lbox_GetAll (R),
- !.
- %END Циклы, idc_ok _CtlInfo
- %BEGIN Циклы, idc_построить_строку _CtlInfo
- dlg_циклы_eh(_Win,e_Control(idc_построить_строку,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
- sp_st(SL,"",R),
- dlg_Note ("Результат",R),
- !.
- %END Циклы, idc_построить_строку _CtlInfo
я так понимаю в предикате sp_st должно быть Ilist,String,String. С помощью concat мы преобразуем в строку, вот только почему это не выводится в dlg_note?
Решение задачи: «Реализовать работу стандартного предиката чтения строки с помощью цикла (Visual Prolog 5.2)»
textual
Листинг программы
- %BEGIN Циклы, idc_ok _CtlInfo
- dlg_циклы_eh(_Win,e_Control(idc_ok,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
- El = win_GetCtlHandle (_Win, idc_циклы_1),
- Element=win_GetText (El),
- Element<>"",
- R= win_GetCtlHandle (_Win,lbox),
- lbox_Add(R, Element),
- !.
- %END Циклы, idc_ok _CtlInfo
- %BEGIN Циклы, idc_построить_строку _CtlInfo
- dlg_циклы_eh(_Win,e_Control(idc_построить_строку,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
- R= win_GetCtlHandle (_Win,lbox),
- SL =lbox_GetAll (R),
- sp_st(SL,"",R),
- dlg_Note ("Результат",R),
- !.
- %END Циклы, idc_построить_строку _CtlInfo
Объяснение кода листинга программы
В этом коде реализованы два предиката:
dlg_циклы_eh
— отвечает за цикл обработки элементов в диалоговом окне. У этого предиката четыре аргумента: —_Win
— ссылка на окно диалога. —_CtrlType
— тип контрола. —_CtrlWin
— дескриптор контрола. —_CtlInfo
— информация о контроле. В этом предикате реализован цикл, который обрабатывает каждый элемент в списке контролов диалогового окна.dlg_Note
— выводит сообщение в диалоговом окне. У этого предиката два аргумента: —Текст
— текст сообщения. —Handle
— дескриптор окна диалога. В этом предикате используется функцияlbox_GetAll
, которая получает все элементы из списка, и функцияsp_st
, которая строит строку из списка элементов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д