Реализовать работу стандартного предиката чтения строки с помощью цикла (Visual Prolog 5.2)
Формулировка задачи:
Не поможете, что то не работает. Нужно реализовать работу стандартного предиката чтения строки с помощью цикла. В общем вводим списки, а выводим строку.
вот обработка кнопок:
я так понимаю в предикате 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, которая строит строку из списка элементов.