Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Работа с интерфейсом GUI в Visual Prolog 7.4
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
ShD ShD вне форума
Member
 
Сообщений: 27
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.01.2014
По умолчанию Работа с интерфейсом GUI в Visual Prolog 7.4 - 29.01.2014, 03:54

Если есть возможность, подскажите плс, где я зарулил не правильно...
Цель следующая:
1. Организовать форму для ввода переменных типа real
real A, real B, string (<=,=>),real R
должна получиться формула A*X+B*Y<= (или >=) R
2. Создать класс math_raschet, в котором проводятся вычисления и результаты будут выводится в другую форму с графиком.
(Думаю, что уже понятно, что это задача графического решения линейного уравнения)
3. Создать форму в которой будут отображаться результаты математического решения и рисоваться график.

Сделал по порядку.
1. Организовал форму в которой считаю, что мне понадобятся следующие контролы -Static text(для руководства пользователя),Edit control(для ввода переменных-2 шт), List edit (для выбора знака сравнения) и кнопки button

implement forma_1
inherits formWindow
open core, vpiDomains


clauses
display(Parent) = Form :-
Form = new(Parent),
Form:show().

clauses
new(Parent):-
formWindow::new(Parent),
generatedInitialize().

predicates
onHelpMenuItem : window::menuItemListener.
clauses
onHelpMenuItem(_Source, _MenuTAG).

class facts
edit_Temp:string:="".

predicates
onEditModified : editControl::modifiedListener.
clauses
onEditModified(_Source):-
A=edit_A_ctl:getText(),
(A="",edit_Temp:="",!;
hasDomain(real,Ar1), Ar1=tryToTerm(A),
%math_raschet::uravnenie(Ar1,_Br1,_Zn1,_R1),
edit_Temp:=A,!;
% Ar=math::tryToReal(A),edit_Temp=A,vpiCommonDialogs ::note ("Вы занесли real - ",A), !;
% vpiCommonDialogs::note ("Вы занесли real - ",A)).
edit_A_ctl:setText(edit_Temp)).


predicates
onEdit1Modified : editControl::modifiedListener.
clauses
onEdit1Modified(_Source):-
B=edit_B_ctl:getText(),
(B="",edit_Temp:="",!;
hasDomain(real,Br), Br=tryToTerm(B),edit_Temp:=B,!;
edit_B_ctl:setText(edit_Temp)).
predicates
onEdit2Modified : editControl::modifiedListener.
clauses
onEdit2Modified(_Source).


predicates
onListEdit_Z1SelectionChanged : listControl::selectionChangedListener .
clauses
onListEdit_Z1SelectionChanged(_Source):-
%Win=listEdit_Z1_ctl:getVpiWindow(), % определяет окно в котором этот контрол
[Zn|_]= listEdit_Z1_ctl :getSelectedItems(),%выводит выбранный элемент списка строкой
%[Zn|_]= listEdit_Z1_ctl :getSelectedIndices(),Znak=listEdit_Z1_ctl:getAt(Z n),% этот не понял...
%Znak = vpi::lboxGetItem(Win,Zn),% пробовал вывести элемент Znak - типом string, но тогда надо Zn- integer
vpiCommonDialogs::note ("Выбран знак - ",Zn),!;
vpiCommonDialogs::note ("знак не выбран !!").

predicates
onListEdit_Z1DropDown : listControl::dropDownListener.
clauses
onListEdit_Z1DropDown(_Source).

predicates
onListEdit_Z1CloseUp : listControl::closeUpListener.
clauses
onListEdit_Z1CloseUp(_Source).

predicates
onOkClick : button::clickResponder.
clauses
onOkClick(_Source) = %button::defaultAction
math_raschet::uravnenie(Ar1,Br1,Zn1,R1,1).
%button::defaultAction.


% This code is maintained automatically, do not update it manually. 00:54:14-29.1.2014
facts
ok_ctl : button.
cancel_ctl : button.
help_ctl : button.
edit_A_ctl : editControl.
edit_B_ctl : editControl.
listEdit_Z1_ctl : listEdit.
edit_R1_ctl : editControl.
listZnak:string*:=["<=",">="].
predicates
generatedInitialize : ().
clauses
generatedInitialize():-
setFont(vpi::fontCreateByName("Tahoma", 8)),
setText("forma_1"),
setRect(rct(50,40,290,242)),
setDecoration(titlebar([closebutton(),maximizebutton(),minimizebutton()])),
setBorder(sizeBorder()),
setState([wsf_ClipSiblings,wsf_ClipChildren]),
menuSet(noMenu),
StaticText_ctl = textControl::new(This),
StaticText_ctl:setText("Static text"),
StaticText_ctl:setPosition(4, 0),
StaticText_ctl:setSize(232, 84),
StaticText_ctl:setAnchors([control::left,control::top,control::right]),
StaticText1_ctl = textControl::new(This),
StaticText1_ctl:setText(" x"),
StaticText1_ctl:setPosition(60, 94),
StaticText1_ctl:setSize(28, 8),
StaticText1_ctl:setAnchors([control::left,control::top,control::right]),
StaticText2_ctl = textControl::new(This),
StaticText2_ctl:setText(" y"),
StaticText2_ctl:setPosition(112, 94),
StaticText2_ctl:setSize(28, 8),
StaticText2_ctl:setAnchors([control::left,control::top,control::right]),
ok_ctl := button::newOk(This),
ok_ctl:setText("&OK"),
ok_ctl:setPosition(12, 180),
ok_ctl:setSize(56, 16),
ok_ctl:defaultHeight := false(),
ok_ctl:setAnchors([control::right,control::bottom]),
ok_ctl:setClickResponder(onOkClick),
cancel_ctl := button::newCancel(This),
cancel_ctl:setText("Cancel"),
cancel_ctl:setPosition(72, 180),
cancel_ctl:setSize(56, 16),
cancel_ctl:defaultHeight := false(),
cancel_ctl:setAnchors([control::right,control::bottom]),
help_ctl := button::new(This),
help_ctl:setText("&Help"),
help_ctl:setPosition(136, 180),
help_ctl:setSize(56, 16),
help_ctl:defaultHeight := false(),
help_ctl:setAnchors([control::right,control::bottom]),
help_ctl:addMenuItemListener(onHelpMenuItem),
edit_A_ctl := editControl::new(This),
edit_A_ctl:setText("0"),
edit_A_ctl:setPosition(40, 94),
edit_A_ctl:setWidth(20),
edit_A_ctl:setAnchors([control::left,control::top,control::right]),
edit_A_ctl:addModifiedListener(onEditModified),
edit_B_ctl := editControl::new(This),
edit_B_ctl:setText("0"),
edit_B_ctl:setPosition(88, 94),
edit_B_ctl:setWidth(24),
edit_B_ctl:setAnchors([control::left,control::top,control::right]),
edit_B_ctl:addModifiedListener(onEdit1Modified),
listEdit_Z1_ctl := listEdit::new(listZnak),
listEdit_Z1_ctl:setText("=<"),
listEdit_Z1_ctl:setPosition(140, 94),
listEdit_Z1_ctl:setWidth(32),
listEdit_Z1_ctl:setMaxDropDownRows(6),
listEdit_Z1_ctl:setAnchors([control::left,control::top,control::right]),
listEdit_Z1_ctl:addCloseUpListener(onListEdit_Z1Cl oseUp),
listEdit_Z1_ctl:addDropDownListener(onListEdit_Z1D ropDown),
listEdit_Z1_ctl:addSelectionChangedListener(onList Edit_Z1SelectionChanged),
edit_R1_ctl := editControl::new(This),
edit_R1_ctl:setText("0"),
edit_R1_ctl:setPosition(172, 94),
edit_R1_ctl:setWidth(20),
edit_R1_ctl:setAnchors([control::left,control::top,control::right]),
edit_R1_ctl:addModifiedListener(onEdit2Modified),
setDefaultButton(ok_ctl).
% end of automatic code
end implement forma_1

2 Теперь при нажатии кнопки ОК на форме хотелось бы вызвать класс match_raschet в который передать переменные
Думал передать данные через предикат -

predicates
onOkClick : button::clickResponder.
clauses
onOkClick(_Source) = %button::defaultAction
math_raschet::uravnenie(Ar1,Br1,Zn1,R1,1).

в класс

implement math_raschet
open core,math
class facts
uravnenie:(real,real,string,real,integer).
class predicates
% uravnenie:(real,real,string,real,integer)procedure (i,i,i,i,i)(o,o,o,o,o).
uravnenie1:(real _Ar1,real _Br1,string _Zn1,real _R1)nondeterm.
uravnenie2:(real _Ar,real _Br,string _Zn,real _R)nondeterm.
uravnenie3:(real _Ar,real _Br,string _Zn,real _R)nondeterm.
uravnenie4:(real _Ar,real _Br,string _Zn,real _R)nondeterm.
clauses
uravnenie(0,0,_,0,_):-!.
uravnenie1(Ar1,Br1,Zn1,R1):-uravnenie(Ar1,Br1,Zn1,R1,1).
uravnenie2(Ar2,Br2,Zn2,R2):-uravnenie(Ar2,Br2,Zn2,R2,2).
uravnenie3(Ar3,Br3,Zn3,R3):-uravnenie(Ar3,Br3,Zn3,R3,3).
uravnenie4(Ar4,Br4,Zn4,R4):-uravnenie(Ar4,Br4,Zn4,R4,4).


end implement math_raschet


Выдает ошибки:
Type Description Filename e267 The fact 'math_raschet::uravnenie/5' cannot have a clause body math_raschet.pro

Type Description Filename e229 Undeclared identifier 'math_raschet::uravnenie/5->' forma_1.pro

Что думаю сам:
1. Возможно, что нужно объявить вводимые переменные, как глобальные, чтобы они виделись во всех предикатах формы( forma_1.pro)
2. Не ясно почему возникает вторая ошибка, ведь декларирование происходит в классе math_raschet...?
3. Абсолютно запутался, почему возникает первая ошибка, понимаю, что нужно перечитывать еще раз про факты и внутренние базы данных, наверное,т.е. понять порядок создания факта, чтобы его можно было использовать при вызове предикатов...
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 8,134
Сказал(а) спасибо: 5
Поблагодарили 336 раз(а) в 335 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 29.01.2014, 21:45

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

p.s. Роль глобальных переменных в Visual Prolog играют факты-переменные.
Ответить с цитированием
  (#3 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 1,010
Сказал(а) спасибо: 0
Поблагодарили 49 раз(а) в 49 сообщениях
Регистрация: 10.02.2005
По умолчанию 30.01.2014, 13:24

Цитата:
Сообщение от Винитарх Посмотреть сообщение
Для передачи параметров в некий класс Вы можете воспользоваться фактами-переменными или просто фактами, которые видны из того класса, которому передаются параметры.

p.s. Роль глобальных переменных в Visual Prolog играют факты-переменные.
Это часть информации. Чтобы она стала полной, надо добавить, что при этом в классе (интерфейсе) должна быть объявлена сущность property, имеющая то же имя, что и факт-переменная.
Добавлю, что глобальных переменных в VIP нет, но есть правила видимости.
Ответить с цитированием
  (#4 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 8,134
Сказал(а) спасибо: 5
Поблагодарили 336 раз(а) в 335 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 30.01.2014, 18:35

Цитата:
Сообщение от VictorY Посмотреть сообщение
Добавлю, что глобальных переменных в VIP нет, но есть правила видимости.
Спасибо. Конечно же, глобальных переменных, в общепринятом понимании этого термина, нет. У каждого факта есть границы видимости. Правда последние можно раздвигать по желанию программиста, включая в область видимости нужные классы.
Ответить с цитированием
  (#5 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 1,010
Сказал(а) спасибо: 0
Поблагодарили 49 раз(а) в 49 сообщениях
Регистрация: 10.02.2005
По умолчанию 30.01.2014, 19:13

Цитата:
Сообщение от Винитарх Посмотреть сообщение
Спасибо. Конечно же, глобальных переменных, в общепринятом понимании этого термина, нет. У каждого факта есть границы видимости. Правда последние можно раздвигать по желанию программиста, включая в область видимости нужные классы.
Я немного другой смысл вкладываю в понятие видимости.
Граница видимости - декларация класса и интерфейса. Извне видно то, что там задекларировано.
Включать же классы можно только в пакет или в директиву open.
Директива open или ссылка на класс или объект (при включении в пакет) - это синтаксическое обеспечение видимости.
Поэтому (по Вашему выражению) "раздвигать", включая классы (куда? - в пакет? - в директиву open?) - на мой взгляд - это не есть концептуальное обеспечение видимости.
Конечно, можно также говорить о видимости с точки зрения структуры пакетов, где все сводится к директиве #include. Но это видимость другого порядка, я бы даже сказал - это обеспечение видимости текстовых ссылок.
Концептуальное обеспечение видимости - это декларирование сущностей в декларации класса или в интерфейсе. Кстати, и в механизмах наследования тоже свои правила видимости - но они опять-таки опираются на декларации классов и интерфейсов.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 8,134
Сказал(а) спасибо: 5
Поблагодарили 336 раз(а) в 335 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 30.01.2014, 19:56

Цитата:
Сообщение от VictorY Посмотреть сообщение
Я немного другой смысл вкладываю в понятие видимости.
Граница видимости - декларация класса и интерфейса. Извне видно то, что там задекларировано.
Да, конечно.
Я использовал термин "видимость" слишком вольно. Имелась в виду способность стороннего класса иметь доступ к факту-переменной данного класса (я это назвал "видеть факт-переменную").
Ответить с цитированием
  (#7 (permalink)) Старый
ShD ShD вне форума
Member
 
Сообщений: 27
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.01.2014
По умолчанию 31.01.2014, 01:13

полез в Help и понял, что с реализацией сущности property - сходу не понять...Мне показалось, что с помощью этого приема можно даже сразу control считывать из формы в класс- обработчик?!!

vpiProperty::property = property(
id,
string PropertyTitle,
control,
errorPrompt,
booleanInt UseCallPushbutton).
control =
editStr(
string Text,
strProperties);

Можно ли пример увидеть какой-нибудь с подключением через property?

Я пока пытаюсь сделать так:
1. объявил факты в коде на форму

class facts
perA1:real:=0.
perB1:real:=0.
perR1:real:=0.
znakZ1:string:="".

2. И собираюсь через предикат в классе- обработчике "перенести" эти факты, измененные в форме
uravnenie1(Ar1,Br1,Zn1,R1):-
Ar1=forma_1::perA1,Br1=forma_1::perB1,R1=forma_1:: perR1,Zn1=forma_1::perZ1.

3. Или сразу подключить forma_1 к классу обработчику

implement math_raschet
open core,math,forma_1
Ответить с цитированием
  (#8 (permalink)) Старый
ShD ShD вне форума
Member
 
Сообщений: 27
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.01.2014
По умолчанию 31.01.2014, 03:23

Не получается... Нашел ветку на форуме "Объясните весь синтаксис properties" изучаю.Объясните весь синтаксис properties.

Последний раз редактировалось ShD; 31.01.2014 в 03:30
Ответить с цитированием
  (#9 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,795
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 31.01.2014, 14:22

Используйте, пожалуйста, теги для кода. Для этого есть специальная кнопочка ViP. Кроме этого, форматируйте код с помощью отступов (табов). Тогда Ваш код будет читабелен и те, кто в принципе может что-то подсказать, смогут сделать это.
Пока что Вы приводили большое количество кода в трудно читаемом виде. Поэтому я, например, его пропускала. Возможно, что некоторые другие люди тоже.
Ответить с цитированием
  (#10 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 8,134
Сказал(а) спасибо: 5
Поблагодарили 336 раз(а) в 335 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 31.01.2014, 15:38

Вот Ваша форма, где Вы вводите свои параметры:
Visual Prolog Код:
interface my_interface
properties
myFact: string.         % это факт-переменную видно извне
end interface my_interface

class my_class : my_interface
end class my_class

implement my_class
facts
myFact: string := "цирик".    % объявление и инициализация факта-переменной

predicates
onEditModified : editControl::modifiedListener.
clauses
onEditModified(_Source):- myFact:=edit_A_ctl:getText().  % установка нового значения факта-переменной
end implement my_class
Вот как в стороннем классе надо читать введённые параметры:
Visual Prolog Код:
Параметр = Форма:myFact
Переменная Форма - это ссылка на Вашу форму. Она инициализируется при создании формы. Имеет тип object. При необходимости, эту ссылку также можно сохранить.
Ответить с цитированием
  (#11 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,795
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 31.01.2014, 16:00

По-моему, onEditModified имеет смысл использовать только если изображение будет меняться на глазах, но тогда нужно сразу писать вызов предиката, который будет обновлять изображение на ходу.
Если на ходу делать ничего не надо, то достаточно при нажатии на кнопку считать данные, да отправить куда нужно. "Куда нужно" - это либо создать окно, где будет строиться изображение, а потом вызвать там предикат, который будет что-то строить (нужно будет объявить его в интерфейсе), либо, если окно уже создано, обновить изображение. А там уже и вызывать класс, который ведет расчеты (кстати, Вы уже решили, что за расчеты Вы будете вести?), а потом строить изображение.
Ответить с цитированием
  (#12 (permalink)) Старый
ShD ShD вне форума
Member
 
Сообщений: 27
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.01.2014
По умолчанию 06.02.2014, 00:57

Спасибо большое! Приобрел "Теория и практика логического программирования на языке Visual Prolog" Цуканова и Дмитриевой Помогло систематизировать все, что узнал здесь на форуме и как, напоминалка под рукой очень удобно, чтобы в строить обращения, переходы внутри программы. В целом, представляю, как сделать мою задачу. Но уперся в проблему - работа с классом onPoint, прорисовка линий, хотя бы в упрощенном варианте. В книге эта тема даже не затрагивается....
Кстати, также там нет информации про- properties, используется для общего доступа только факты и предикаты в файле-объявлении класса( .cl ) Поэтому за Вашу информацию с примером, Винитарх- отдельное спасибо.
Мне позарез надо понять как все свои "дорожки" привести к цели(как я ее понимаю не факт, что правильно), а именно:
1.Мне надо нарисовать координатную сетку - ординату и абсциссу, но не просто "крест" а с отметками на осях - отрезки (без цифр) Для рисования, мне надо, как я понимаю, использовать размеры области формы, которые, конечно указаны в Properties формы(X,Y,Width,Height), но правильнее использовать предикат, который показывал бы размеры и координаты окна для рисования) - вы не могли бы подсказать куда смотреть?

2. Для поиска точек пересечения линий, я так понимаю, что мне надо создать цикл который с определенным шагом (наверное, шаг будет в 1 пиксел, т.к. координаты даются в пикселях?) создаст систему списков координат [[X,Y],[X1,Y1]....] в котором количество пар будет определяться размерами поля визуализации формы Xmin=левый верхний угол поля и Xmax=Xmin+ системный предикат(Width)
Ymin=левый верхний угол поля и Ymax=Ymin+предикат(Height)
И сравнить на пересечение эти списки: предикат [_|_]=intersection(List1,List2).

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

Нашел много интересного по рисованию в этой ветке на форуме Осваиваем VIP 7.3
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
ShD ShD вне форума
Member
 
Сообщений: 27
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.01.2014
По умолчанию 06.02.2014, 01:03

Цитата:
Сообщение от Alison Посмотреть сообщение
Используйте, пожалуйста, теги для кода. Для этого есть специальная кнопочка ViP. Кроме этого, форматируйте код с помощью отступов (табов). Тогда Ваш код будет читабелен и те, кто в принципе может что-то подсказать, смогут сделать это.
Пока что Вы приводили большое количество кода в трудно читаемом виде. Поэтому я, например, его пропускала. Возможно, что некоторые другие люди тоже.
Ок, спасибо- нашел VIP.
Ответить с цитированием
  (#14 (permalink)) Старый
ShD ShD вне форума
Member
 
Сообщений: 27
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.01.2014
По умолчанию 06.02.2014, 01:11

Цитата:
Сообщение от Alison Посмотреть сообщение
А там уже и вызывать класс, который ведет расчеты (кстати, Вы уже решили, что за расчеты Вы будете вести?), а потом строить изображение.
Логику расчетов и сравнений я набросал в черновике, для реализации мне нужно привязаться к координатам окна формы, не знаю как это сделать в автоматическом режиме (не вручную же цифры подставлять в формулы)
Ответить с цитированием
  (#15 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 8,134
Сказал(а) спасибо: 5
Поблагодарили 336 раз(а) в 335 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 06.02.2014, 20:15

1. Например так можно сохранить координаты клиентской области той формы, где Вы будете рисовать:
Visual Prolog Код:
onShow(_Source, _Data) :-
    rct(Left,Top,Right,Bottom) = getClientRect (), % позиция в пикселях
    x0:=Left,
    y0:=Top,
    x1:=Right,
    y1:=Bottom.

2. Я не очень понял Вашу задачу, но думаю, что пересечения лучше искать математически, а не перебором точек.

3. Линии координатной сетки и маленькие отрезки на осях рисуйте с помощью GDI:drawLine. Например вот так можно нарисовать линию серого цвета между точками с координатами X0,Y0 и X1,Y1:
Visual Prolog Код:
predicates
onPaint :window::paintResponder.
clauses
onPaint(_Source, _Rectangle, GDI) :-
    GDI:setPen(pen(1,ps_Solid,color_Gray)),
    GDI:drawLine(pnt(X0,Y0),pnt(X1,Y1)).
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа в visual prolog AndreSan Задания за деньги 3 13.12.2015 17:34
Работа с изображениями в Visual Prolog serega9191 Prolog 4 14.01.2014 01:05
Работа с текстом в Visual Prolog 7.1 serega9191 Prolog 7 16.12.2013 02:05
Перенос программ из {TurboProlog.....Visual Prolog 5.2} в Visual Prolog 7 imported_Jenny_ Prolog 30 25.03.2013 19:15
работа со списками Visual Prolog 5.2 vlangel Prolog 1 21.12.2011 15:55
Работа с файлами Пролога в Visual Prolog tumanovalex Prolog 17 15.09.2011 00:47
Помогите переделать задачу из Turbo Prolog в Visual Prolog 5 imported_Anneta Prolog 3 23.12.2010 22:59
Работа с таблицами и БД в Visual Prolog rain_man Prolog 1 22.12.2010 00:08
Кто возьмется переписать маленькую программу с Turbo Prolog на Visual Prolog 5.0 (за плату) olik567 Prolog 4 07.10.2009 17:46
Кто возьмется переписать маленькую программу с Turbo Prolog на Visual Prolog 5.0 (за плату) Игоревна Задания за деньги 16 04.01.2008 17:20
Работа с видео в Visual Prolog Армен Оганезов Prolog 14 13.05.2006 17:16
Работа со строками в Visual Prolog semantics Prolog 4 29.04.2006 13:15



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов