Возможно ли такое в DCL и лиспе
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Возможно ли такое в DCL и лиспе

Возможно ли такое в DCL и лиспе

Ответ
Поиск в этой теме
Непрочитано 31.08.2018, 13:52 #1
Возможно ли такое в DCL и лиспе
protorgovec
 
газо- нефтепереработка
 
Уфа
Регистрация: 22.07.2015
Сообщений: 98

Добрый день. Подскажите, возможно ли вообще такое. Если да, то подскажите как.
Есть одно диалоговое окно:
Код:
[Выделить все]
 KolichestvoNaimenovaniiShtycerov: dialog {label = "Количество наименований штуцеров"; // название диалогового окна

    : spacer{height=1;} // вставка пустой строки

    : boxed_row {

    : row {
    : text {label = "Количество строк в таблице штуцеров"; alignment = centered;}
    : edit_box {key = "KolNaimShtyc"; edit_width=5;}
    }
    }
    
    : spacer{height=1;}   // вставка пустой строки

    ok_cancel;   // добавление кнопок ОК и Отмена
}  // окончание диалога
Вызываю его:
Код:
[Выделить все]
 (setq dcl_filename_full "U:\\Автоматизация проекта\\Lisp\\Проект колонны\\Корпус колонны\\Количество наименований штуцеров.dcl"
              fs_dcl_id (load_dialog dcl_filename_full)
              KolNaimShtyc "0"
    )
        (if (not fs_dcl_id)
            (progn
                (alert "Ошибка загрузки DCL файла!")
                (exit)
            )
            (progn
                (if (not (new_dialog "KolichestvoNaimenovaniiShtycerov" fs_dcl_id))
                    (progn
                        (alert "Ошибка загрузки DCL файла!")
                        (exit)
                    )
                    (progn
                        (action_tile "OK" "(done_dialog 1)")
                        (action_tile "Cancel" "(done_dialog 2)")
		        (action_tile "KolNaimShtyc" "(setq KolNaimShtyc $value)")
                        (setq diag_result (start_dialog))
                        (unload_dialog fs_dcl_id)
		        (setq KolNaimShtyc (atoi KolNaimShtyc))
                    ) 
                )
            )
        )
И есть второе диалоговое окно
Код:
[Выделить все]
 TablicaShtycerov : dialog {
                label = "Таблица штуцеров"; //название диалогового окна
                
                //первый блок
                    : boxed_row {
                            height = 2;
                                    width = 10;
                                    : text  {
                                            label = "Обозначение";
                                            width = 12;
                                            alignment = centered;
                                            }
                                    : text_part {
                                            label = "Наименование";
                                            width = 40;
                                            alignment = centered;
                                            }
                                    : text_part {
                                            label = "Количество";
                                            width = 10;
                                            alignment = centered;
                                            }
                                    : text_part {
                                            label = "Dy, мм";
                                            width = 10;
                                            alignment = centered;
                                            }
                                    : text_part {
                                            label = "Py, МПа";
                                            width = 10;
                                            alignment = centered;
                                            }
                                    : text_part {
                                            label = "Вылет";
                                            width = 10;
                                            alignment = centered;
                                            }
                                            }
                          
//второй блок
                    : boxed_row {
                            height = 2;
                            : row {
                                    : edit_box {
                                            key = "ShtycerOboznachenie";
                                            edit_width = 12;
                                            alignment = centered;
                                            list = "";
                                             }
                                    : edit_box {
                                            key = "ShtycerNaimenovanie";
                                            edit_width = 40;
                                            alignment = centered;
                                            list = "";
                                             }
                                    : edit_box {
                                            key = "ShtycerKolichestvo";
                                            edit_width = 10;
                                            list = "";
                                             }
                                    : edit_box {
                                            key = "ShtycerDy";
                                            edit_width = 10;
                                            list = "";
                                             }
                                    : edit_box {
                                            key = "ShtycerPy";
                                            edit_width = 10;
                                            list = "";
                                             }
                                    : edit_box {
                                            key = "ShtycerVilet";
                                            edit_width = 10;
                                            list = "";
                                             }
                                             }
                                             }
                              
                    ok_cancel;
            }
Вызов для него
Код:
[Выделить все]
 (setq dcl_filename_full "U:\\Автоматизация проекта\\Lisp\\Проект колонны\\Корпус колонны\\Таблица штуцеров.dcl"
              fs_dcl_id (load_dialog dcl_filename_full)
              ShtycerOboznachenie "0"
              ShtycerNaimenovanie "0"
              ShtycerKolichestvo "0"
              ShtycerDy "0"
              ShtycerPy "0"
              ShtycerVilet "0"
    )
        (if (not fs_dcl_id)
            (progn
                (alert "Ошибка загрузки DCL файла!")
                (exit)
            )
            (progn
                (if (not (new_dialog "TablicaShtycerov" fs_dcl_id))
                    (progn
                        (alert "Ошибка загрузки DCL файла!")
                        (exit)
                    )
                    (progn
                        (action_tile "OK" "(done_dialog 1)")
                        (action_tile "Cancel" "(done_dialog 2)")
		        (action_tile "ShtycerOboznachenie" "(setq ShtycerOboznachenie $value)")
		        (action_tile "ShtycerNaimenovanie" "(setq ShtycerNaimenovanie $value)")
		        (action_tile "ShtycerKolichestvo" "(setq ShtycerKolichestvo $value)")
		        (action_tile "ShtycerDy" "(setq ShtycerDy $value)")
		        (action_tile "ShtycerPy" "(setq ShtycerPy $value)")
		        (action_tile "ShtycerVilet" "(setq ShtycerVilet $value)")
                        (setq diag_result (start_dialog))
                        (unload_dialog fs_dcl_id)
		        (setq ShtycerKolichestvo (atoi ShtycerKolichestvo))
		        (setq ShtycerDy (atoi ShtycerDy))
		        (setq ShtycerPy (atof ShtycerPy))
		        (setq ShtycerVilet (atoi ShtycerVilet))
                    ) 
                )
            )
        )
Вопрос такой. Во втором диалоговом окне, один блок для ввода данных.
Возможно ли сделать, что бы при вводе в первом диалоговом окне количества строк, например 10, во втором диалоговом окне появлялись 10 блоков для ввода данных.
И так далее.
Можно конечно сделать кучу вариантов DCL, и прописать условия ,что если в первом окне ввели 5, то открываем DCL где 5 блоков для ввода.
Но может есть иной вариант!
Заранее благодарю!

Последний раз редактировалось protorgovec, 31.08.2018 в 13:55. Причина: Есть ошибки
Просмотров: 11121
 
Непрочитано 31.08.2018, 14:15
#2
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


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

Последний раз редактировалось CalcProg, 31.08.2018 в 14:29.
CalcProg вне форума  
 
Непрочитано 31.08.2018, 14:37
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


А кто мешает dcl создавать "на лету"?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.08.2018, 14:44
#4
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А кто мешает dcl создавать "на лету"?
Что значит на лету?
Увидел сколько строк нужно и тут же создал? Мне так не пойдет, я не смогу объяснить другим людям что такое DCL

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от CalcProg Посмотреть сообщение
не майся разработай форму на другом языке программирования.
могу помочь в разработке.
опиши и нарисуй, что должно быть на форме.
пиши в личку
2 формы, то что у меня высвечивается в диалоговых окнах. Во втором окне, для ввода данных одна строчка. А должно быть столько, сколько пользователь введет в первом диалоговом окне.
protorgovec вне форума  
 
Непрочитано 31.08.2018, 14:50
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


protorgovec, я же тебе показывал, кажется, уже код, где dcl создается самим лиспом. В чем трудность-то?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.08.2018, 14:51
#6
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


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

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
protorgovec, я же тебе показывал, кажется, уже код, где dcl создается самим лиспом. В чем трудность-то?
в том, что он делает первые шаги в разработке программ.
CalcProg вне форума  
 
Непрочитано 31.08.2018, 15:04
1 | 1 #7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Код:
[Выделить все]
 (defun tt (/ main_file main_handle main_id main_res main_range dcl_file dcl_handle dcl_id dcl_res)
  (setq main_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg_main.dcl")
        main_handle (open main_file "w")
        ) ;_ end of setq
  (foreach item '("dlg_main:dialog{label=\"Первое окно\";"
                  "	:edit_box{key=\"range\";label=\"Количество полей\";}"
                  "	ok_cancel;"
                  "	}"
                  )
    (write-line item main_handle)
    ) ;_ end of foreach
  (close main_handle)
  (setq main_id (load_dialog main_file))
  (new_dialog "dlg_main" main_id)
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")
  (set_tile "range" "1")
  (setq main_range 1)
  (action_tile "range" "(setq main_range $value)")
  (setq main_res (start_dialog))
  (unload_dialog main_id)
  (if (and (= main_res 1) (> (setq main_range (atoi main_range)) 0))
    (progn (setq dcl_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg.dcl")
                 dcl_handle (open dcl_file "w")
                 ) ;_ end of setq
           (foreach item (append '("dlg:dialog{label=\"Второе окно\";")
                                 ((lambda (/ i lst)
                                    (setq i 0)
                                    (while (< i main_range)
                                      (setq i   (1+ i)
                                            lst (cons (strcat ":edit_box{key=\"txt" (itoa i) "\";label=\"Поле " (itoa i) "\";}") lst)
                                            ) ;_ end of setq
                                      ) ;_ end of while
                                    (reverse lst)
                                    ) ;_ end of LAMBDA
                                  )
                                 '("	ok_cancel;" "	}")
                                 ) ;_ end of append
             (write-line item dcl_handle)
             ) ;_ end of foreach
           (close dcl_handle)
           (setq dcl_id (load_dialog dcl_file))
           (new_dialog "dlg" dcl_id)
           (action_tile "accept" "(done_dialog 1)")
           (action_tile "cancel" "(done_dialog 0)")
           (setq dcl_res (start_dialog))
           (unload_dialog dcl_id)
           ) ;_ end of progn
    (alert "Эт как?")
    ) ;_ end of if
  ) ;_ end of defun
----- добавлено через 37 сек. -----
Цитата:
Сообщение от CalcProg Посмотреть сообщение
за выходные сделаю и скину небе на почту. адрес своей почты скинь мне вличку.
Остальные недостойны получить сие сакральное знание?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.08.2018, 15:18
#8
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


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

----- добавлено через ~2 мин. -----

в том, что он делает первые шаги в разработке программ.
Я сейчас не успею, уже домой. Да и тебе лучше отдыхать в выходные, не буду воровать личное время. В понедельник напишу!
protorgovec вне форума  
 
Непрочитано 31.08.2018, 15:59
#9
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
К сожалению, это невозможно в вашем браузере.
Кулик Алексей, я с мобилы. Тут мне не выложить. А пальцем набивать уйдет много времени.

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от protorgovec Посмотреть сообщение
Я сейчас не успею, уже домой. Да и тебе лучше отдыхать в выходные, не буду воровать личное время. В понедельник напишу!
в выходные у меня есть время, а в понедельник может не быть.
CalcProg вне форума  
 
Непрочитано 01.09.2018, 22:42
1 | 1 #10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Возможно ли сделать, что бы при вводе в первом диалоговом окне количества строк, например 10, во втором диалоговом окне появлялись 10 блоков для ввода данных.
И так далее.
еще можно просто сделать одну форму для ввода данных блока и вызывать ее в цикле требуемое число раз.. только заголовок предусмотреть типа "ввод 3 значения из 10". Насколько понимаю, вопрос об юзабилити уже не стоит.
Сергей812 вне форума  
 
Непрочитано 02.09.2018, 06:00
#11
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


Кулику Алексею. Ни чего секретного. Воспользуемся этим решением :
http://forum.dwg.ru/showthread.php?t=6459
опубликованном в 2006 году.
CalcProg вне форума  
 
Автор темы   Непрочитано 03.09.2018, 07:03
#12
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


[quote=Кулик Алексей aka kpblc;1751655]
Код:
[Выделить все]
 (defun tt (/ main_file main_handle main_id main_res main_range dcl_file dcl_handle dcl_id dcl_res)
  (setq main_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg_main.dcl")
        main_handle (open main_file "w")
        ) ;_ end of setq
  (foreach item '("dlg_main:dialog{label=\"Первое окно\";"
                  "	:edit_box{key=\"range\";label=\"Количество полей\";}"
                  "	ok_cancel;"
                  "	}"
                  )
    (write-line item main_handle)
    ) ;_ end of foreach
  (close main_handle)
  (setq main_id (load_dialog main_file))
  (new_dialog "dlg_main" main_id)
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")
  (set_tile "range" "1")
  (setq main_range 1)
  (action_tile "range" "(setq main_range $value)")
  (setq main_res (start_dialog))
  (unload_dialog main_id)
  (if (and (= main_res 1) (> (setq main_range (atoi main_range)) 0))
    (progn (setq dcl_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg.dcl")
                 dcl_handle (open dcl_file "w")
                 ) ;_ end of setq
           (foreach item (append '("dlg:dialog{label=\"Второе окно\";")
                                 ((lambda (/ i lst)
                                    (setq i 0)
                                    (while (< i main_range)
                                      (setq i   (1+ i)
                                            lst (cons (strcat ":edit_box{key=\"txt" (itoa i) "\";label=\"Поле " (itoa i) "\";}") lst)
                                            ) ;_ end of setq
                                      ) ;_ end of while
                                    (reverse lst)
                                    ) ;_ end of LAMBDA
                                  )
                                 '("	ok_cancel;" "	}")
                                 ) ;_ end of append
             (write-line item dcl_handle)
             ) ;_ end of foreach
           (close dcl_handle)
           (setq dcl_id (load_dialog dcl_file))
           (new_dialog "dlg" dcl_id)
           (action_tile "accept" "(done_dialog 1)")
           (action_tile "cancel" "(done_dialog 0)")
           (setq dcl_res (start_dialog))
           (unload_dialog dcl_id)
           ) ;_ end of progn
    (alert "Эт как?")
    ) ;_ end of if
  ) ;_ end of defun
----- добавлено через 37 сек. -----

Алексей, добрый день.
А можно получить построчный комментарий к твоей программе? Некоторые строки для меня не понятны!

----- добавлено через 51 сек. -----
Цитата:
Сообщение от CalcProg Посмотреть сообщение
Кулик Алексей, я с мобилы. Тут мне не выложить. А пальцем набивать уйдет много времени.

----- добавлено через ~3 мин. -----

в выходные у меня есть время, а в понедельник может не быть.
Добрый день. Актуально ли еще скидывать в личку? Или сегодня комп под рукой и тут все что нужно есть?
protorgovec вне форума  
 
Непрочитано 03.09.2018, 08:24
#13
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


да.
подготовил простейший пример.

----- добавлено через ~52 мин. -----
(defun c:menu_1( /open_fail_name open_fail_d str_0 str_1 str_2 str_3 str_4 )
(startapp "d:/lispmenu1/menu_1.exe" "error open file" )
;Останавливаем выполнее программы, пока пользователь не закончит работу с внешним диалрговым окном
(write-line "Нажми для продолжения Enter")
(setq str_0 (read-line))
; Открытие файла
(setq open_file_name "d:/lispmenu1/listmenu1.txt")
(setq open_file_d (open open_file_name "r"))
;Чтение файла
(setq str_1 (read-line open_file_d))
(princ "Нажата кнопка номер:")
(princ str_1)
(princ "\n")
(setq str_2 (read-line open_file_d))
(princ "Текст:")
(princ str_2)
(princ "\n")

;Закрытие файла
(close open_file_d)
)

----- добавлено через ~59 мин. -----
на яп Лазарус создаем новый проект
сохраняем как Menu_1
На форме размещаем компаненты: Edit1 - текстовое поле;
comboBox1 - комбинированный список;
Memo1 - многострочное поле ввода текста;
Button1, Button2 - Кнопки.

----- добавлено через ~1 ч. -----
Для кнопок на вкладке события в инспекторе объектов выбираем события OnClick
Для формы событие OnCreate

----- добавлено через ~2 ч. -----
Var NameFile: ansistring; // Глобалная переменная хранит имя файла
//При создании формы устанавливаем нач знач глоб переменных и меняем свойства компанентов
Procedure TForm1.FormCreate (sender: tobject);
begin
// программно меняем свойства компанентов
form1.caption:='пример меню';
Memo1.viseble:=false;
button1.caption:='Передать данные';
button1.caption:='Отмена";
Edit1.text:='проба';
ComboBox1.items.add('Text1');
comboBox1.items.add('Текст2');
comboBox1.items.add('вгд3');
//нач знач
NameFile:='d:\lispmenu1\listmenu1.txt';
// папка d:\lispmenu1 должна быть создана за ранее
end;
// процедура обработки нажатия кнопки отмена
procedure TForm1.Button2Click(sender: tobject);
begin
memo1.clear;
memo1.lines.add('0');
Try
memo1.lines.saveToFile (Utf8ToAnsi(nameFile));
except
showMessage ('Ошибка при записи ');
end;
close;
end;
// Процедура обработки нажати кнопки передача данных
procedure TForm1.Button1Click(sender:TObject);
begin
memo1.Clear;
memo1.Lines.Add('1');
memo1.Lines.Add(Utf8ToAnsi(Edit1.Text));
memo1.Lines.Add(Utf8ToAnsi(ComboBox1.Text));
memo1.Lines.Add(IntToStr(ComboBox1.ItemIndex));
tru
memo1.Lines.SaveToFile(utf8ToAnsi(NameFile));
except
showMessage ('ошибка');
end;
close;
end;

Последний раз редактировалось CalcProg, 03.09.2018 в 12:09. Причина: очепятка
CalcProg вне форума  
 
Автор темы   Непрочитано 03.09.2018, 11:42
#14
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от CalcProg Посмотреть сообщение
на яп Лазарус создаем новый проект
Я так понял что это про программу Lazarus?

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от protorgovec Посмотреть сообщение
на яп Лазарус создаем новый проект
Какую лучше версию скачать? Или без разницы?
protorgovec вне форума  
 
Непрочитано 03.09.2018, 11:48
1 | #15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Вы либо в ЛС и продолжайте общаться, либо создавайте новую тему в разделе "Программирование" и там обсуждайте.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.09.2018, 11:54
#16
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вы либо в ЛС и продолжайте общаться, либо создавайте новую тему в разделе "Программирование" и там обсуждайте.
а что с этой не так? DCL - не относится к теме программирование?

----- добавлено через ~1 мин. -----
Цитата:
Сообщение от protorgovec Посмотреть сообщение
Я так понял что это про программу Lazarus?

----- добавлено через ~2 мин. -----

Какую лучше версию скачать? Или без разницы?

без разницы, но лучше качать с официального сайта, а там только последние версии.
CalcProg вне форума  
 
Непрочитано 03.09.2018, 12:15
#17
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


дичь, всё тоже самое далеается на dotNET и сильно проще
ставь Visual Studio Community
trir вне форума  
 
Непрочитано 03.09.2018, 12:20
1 | 1 #18
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


CalcProg, еще раз: либо ведется обсуждение lisp и dcl с этой теме, но гласно. Либо организовываете междусобойчик и там говорите о чем хотите. Либо начинаете обсуждать Lazarus - но он к lisp/dcl не имеет прямого отношения, поэтому добро пожаловать в новую ветку.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.09.2018, 12:24
#19
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


Цитата:
Сообщение от trir Посмотреть сообщение
дичь, всё тоже самое далеается на dotNET и сильно проще
ставь Visual Studio Community
супер! главное ставь вижуал студию! а учить ей пользоваться, кто будет?
то что проще в ней спору нет.
а лазарус проще для понимания.
пока он в твоей вижуальной студии разберется, оно и уже не требо буде.

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
CalcProg, еще раз: либо ведется обсуждение lisp и dcl с этой теме, но гласно. Либо организовываете междусобойчик и там говорите о чем хотите. Либо начинаете обсуждать Lazarus - но он к lisp/dcl не имеет прямого отношения, поэтому добро пожаловать в новую ветку.
согласен с твоим аргументом.
пущай инициатор создает.
ну или модератор создаст и перенесет все лишнее туда.
я с мобилы, мой браузер такого не поддерживает.
CalcProg вне форума  
 
Непрочитано 03.09.2018, 12:31
#20
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
а лазарус проще для понимания.
сомнительное утверждение, а Visual Studio полезней будет - есть NET API
trir вне форума  
 
Непрочитано 03.09.2018, 12:52
#21
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


.!.
CalcProg вне форума  
 
Непрочитано 03.09.2018, 14:31
#22
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Offtop: имхо, пускай ТС еще набьёт "шишек" на реализации динамических интерфейсов на базе связки lisp+DCL. Это лет 20 назад компьютер для большинства пользователей был "таинством" и можно было любой интерфейс лепить в программу - все равно работали с большими глазами и повышенным вниманием. А сейчас люди избалованы, у многих в кармане смартфоны с интуитивным интерфейсом и с возможностями компьютеров тех лет. И когда они увидят этот "суперпродукт" от ТС с интерфейсом 15..20 летней давности, а потом еще и попользуются - у них возникнут определенные вопросы. А там уже как начальство себя поведет - по уму или традиционно положив на проблему..)
Сергей812 вне форума  
 
Автор темы   Непрочитано 05.09.2018, 08:58
#23
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от protorgovec Посмотреть сообщение
на яп Лазарус создаем новый проект
Тут проблемка, наши админы не дают мне установить эту прогу. Так что придется дома поставить, поизучать

----- добавлено через ~1 ч. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Код:
[Выделить все]
 (defun tt (/ main_file main_handle main_id main_res main_range dcl_file dcl_handle dcl_id dcl_res)
  (setq main_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg_main.dcl")
        main_handle (open main_file "w")
        ) ;_ end of setq
  (foreach item '("dlg_main:dialog{label=\"Первое окно\";"
                  "	:edit_box{key=\"range\";label=\"Количество полей\";}"
                  "	ok_cancel;"
                  "	}"
                  )
    (write-line item main_handle)
    ) ;_ end of foreach
  (close main_handle)
  (setq main_id (load_dialog main_file))
  (new_dialog "dlg_main" main_id)
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")
  (set_tile "range" "1")
  (setq main_range 1)
  (action_tile "range" "(setq main_range $value)")
  (setq main_res (start_dialog))
  (unload_dialog main_id)
  (if (and (= main_res 1) (> (setq main_range (atoi main_range)) 0))
    (progn (setq dcl_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg.dcl")
                 dcl_handle (open dcl_file "w")
                 ) ;_ end of setq
           (foreach item (append '("dlg:dialog{label=\"Второе окно\";")
                                 ((lambda (/ i lst)
                                    (setq i 0)
                                    (while (< i main_range)
                                      (setq i   (1+ i)
                                            lst (cons (strcat ":edit_box{key=\"txt" (itoa i) "\";label=\"Поле " (itoa i) "\";}") lst)
                                            ) ;_ end of setq
                                      ) ;_ end of while
                                    (reverse lst)
                                    ) ;_ end of LAMBDA
                                  )
                                 '("	ok_cancel;" "	}")
                                 ) ;_ end of append
             (write-line item dcl_handle)
             ) ;_ end of foreach
           (close dcl_handle)
           (setq dcl_id (load_dialog dcl_file))
           (new_dialog "dlg" dcl_id)
           (action_tile "accept" "(done_dialog 1)")
           (action_tile "cancel" "(done_dialog 0)")
           (setq dcl_res (start_dialog))
           (unload_dialog dcl_id)
           ) ;_ end of progn
    (alert "Эт как?")
    ) ;_ end of if
  ) ;_ end of defun
----- добавлено через 37 сек. -----

Остальные недостойны получить сие сакральное знание?
Алексей. Посмотрел, вроде бы разобрался. Один вопрос. Когда во втором окне мы даем значение в каждом поле, для них не заданы переменные, которые нужны для дальнейших построений и вычислений.
protorgovec вне форума  
 
Непрочитано 05.09.2018, 10:01
#24
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Так что придется дома поставить, поизучать
Поставьте лучше бесплатную студию - дельфи вы не знаете, насколько понимаю. И нет смысла на его изучение время тратить, имхо - лучше сразу на тот же .Net переходить. trir уже ссылку давал ранее - как на .Net через [LispFunction] создавать диалоги и потом вызывайте из своей основной программы как обыкновенную lisp функцию. Главное - сделайте модальные диалоги в .Net, чтобы выполнение основной программы остановилось на время вызова.
Сергей812 вне форума  
 
Непрочитано 05.09.2018, 10:51
1 | 1 #25
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
Тут проблемка, наши админы не дают мне установить эту прогу
ну, что бы собрать приложение на c# - даже не надо ставить VS
trir вне форума  
 
Непрочитано 05.09.2018, 14:41
#26
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Тут проблемка, наши админы не дают мне установить эту прогу.
Обратитесь к БольшомуБоссу. Доложите, что для роста производства и прибыли лично БольшогоБосса крайне необходимо конструирование диалогов в "этой проге".
Пущай БольшойБосс вменит в обязанности админам разрабатывать по вашим заданиям и в кратчайшие сроки всё необходимое, а не ставить палки в колеса. Онижепрограммисты. Зря что-ли их кормят?

Завтра же "эта прога" и любая другая появится у вас.

И я тоже советую - не тратьте время на DCL. Быстрее освоить любую современную систему разработки.
ShaggyDoc вне форума  
 
Непрочитано 05.09.2018, 14:58
#27
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Offtop:
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Обратитесь к БольшомуБоссу. Доложите, что для роста производства и прибыли лично БольшогоБосса крайне необходимо конструирование диалогов в "этой проге".
Пущай БольшойБосс вменит в обязанности админам разрабатывать по вашим заданиям и в кратчайшие сроки всё необходимое, а не ставить палки в колеса. Онижепрограммисты. Зря что-ли их кормят?
чтобы такие заявления делать - надо иметь достаточный опыт и понимание своих реальных возможностей. Иначе можно хорошо подставить самого себя - особенно, если в цепочке к ББ окажется желающие "примазаться" к результатам и потом понадобится козел отпущения - когда результаты разойдутся с реальностью.
Сергей812 вне форума  
 
Автор темы   Непрочитано 05.09.2018, 15:14
#28
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Код:
[Выделить все]
 (defun tt (/ main_file main_handle main_id main_res main_range dcl_file dcl_handle dcl_id dcl_res)
  (setq main_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg_main.dcl")
        main_handle (open main_file "w")
        ) ;_ end of setq
  (foreach item '("dlg_main:dialog{label=\"Первое окно\";"
                  "	:edit_box{key=\"range\";label=\"Количество полей\";}"
                  "	ok_cancel;"
                  "	}"
                  )
    (write-line item main_handle)
    ) ;_ end of foreach
  (close main_handle)
  (setq main_id (load_dialog main_file))
  (new_dialog "dlg_main" main_id)
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")
  (set_tile "range" "1")
  (setq main_range 1)
  (action_tile "range" "(setq main_range $value)")
  (setq main_res (start_dialog))
  (unload_dialog main_id)
  (if (and (= main_res 1) (> (setq main_range (atoi main_range)) 0))
    (progn (setq dcl_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg.dcl")
                 dcl_handle (open dcl_file "w")
                 ) ;_ end of setq
           (foreach item (append '("dlg:dialog{label=\"Второе окно\";")
                                 ((lambda (/ i lst)
                                    (setq i 0)
                                    (while (< i main_range)
                                      (setq i   (1+ i)
                                            lst (cons (strcat ":edit_box{key=\"txt" (itoa i) "\";label=\"Поле " (itoa i) "\";}") lst)
                                            ) ;_ end of setq
                                      ) ;_ end of while
                                    (reverse lst)
                                    ) ;_ end of LAMBDA
                                  )
                                 '("	ok_cancel;" "	}")
                                 ) ;_ end of append
             (write-line item dcl_handle)
             ) ;_ end of foreach
           (close dcl_handle)
           (setq dcl_id (load_dialog dcl_file))
           (new_dialog "dlg" dcl_id)
           (action_tile "accept" "(done_dialog 1)")
           (action_tile "cancel" "(done_dialog 0)")
           (setq dcl_res (start_dialog))
           (unload_dialog dcl_id)
           ) ;_ end of progn
    (alert "Эт как?")
    ) ;_ end of if
  ) ;_ end of defun
----- добавлено через 37 сек. -----

Остальные недостойны получить сие сакральное знание?
Алексей, добрый день.
На основании твоего примера сделал следующее:
Код:
[Выделить все]
 (defun tt (/ main_file main_handle main_id main_res main_range dcl_file dcl_handle dcl_id dcl_res)
 (setq main_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg_main.dcl")
       main_handle (open main_file "w")
       ) ;_ end of setq
 (foreach item '("dlg_main:dialog{label=\"Количество наименований штуцеров\";"
                 " :edit_box{key=\"range\";label=\"Количество строк в таблице штуцеров\";}"
                 " ok_cancel;"
                 " }"
                 )
   (write-line item main_handle)
   ) ;_ end of foreach
 (close main_handle)
 (setq main_id (load_dialog main_file))
 (new_dialog "dlg_main" main_id)
 (action_tile "accept" "(done_dialog 1)")
 (action_tile "cancel" "(done_dialog 0)")
 (set_tile "range" "1")
 (setq main_range 1)
 (action_tile "range" "(setq main_range $value)")
 (setq main_res (start_dialog))
 (unload_dialog main_id)
 (if (and (= main_res 1) (> (setq main_range (atoi main_range)) 0))
   (progn (setq dcl_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg.dcl")
                dcl_handle (open dcl_file "w")
                ) ;_ end of setq
          (foreach item (append '("dlg:dialog{label=\"Таблица штуцеров\";"

" :boxed_row {height = 2; width = 10;"
" : text  {label = \"Обозначение\"; width = 12; alignment = centered;}"
" : text  {label = \"Наименование\"; width = 40; alignment = centered;}"
" : text  {label = \"Количество\"; width = 10; alignment = centered;}"
" : text  {label = \"Dy, мм\"; width = 10; alignment = centered;}"
" : text  {label = \"Py, мм\"; width = 10; alignment = centered;}"
" : text  {label = \"Вылет\"; width = 10; alignment = centered;}"
"}"
				  

				  
				  )
                                ((lambda (/ i lst)
                                   (setq i 0)
                                   (while (< i main_range)
                                     (setq i   (1+ i)
					   
                                           ;lst (cons (strcat ":edit_box{key=\"txt" (itoa i) "\";label=\" " (itoa i) "\";}") lst)

lst (cons (strcat
":boxed_row {"
":row {	"	  
":edit_box{key=\"ShtycerOboznachenie" (itoa i) "\"; edit_width = 12; alignment = centered; list = \" " (itoa i) "\";}"
":edit_box{key=\"ShtycerNaimenovanie" (itoa i) "\"; edit_width = 40; alignment = centered; list = \" " (itoa i) "\";}"
":edit_box{key=\"ShtycerKolichestvo" (itoa i) "\"; edit_width = 10; alignment = centered; list = \" " (itoa i) "\";}"
":edit_box{key=\"ShtycerDy" (itoa i) "\"; edit_width = 10; alignment = centered; list = \" " (itoa i) "\";}"
":edit_box{key=\"ShtycerPy" (itoa i) "\"; edit_width = 10; alignment = centered; list = \" " (itoa i) "\";}"
":edit_box{key=\"ShtycerVilet" (itoa i) "\"; edit_width = 10; alignment = centered; list = \" " (itoa i) "\";}"

"}" ;end row
"}" ; end boxed_row

		  ) lst)


					   
                                           ) ;_ end of setq
                                     ) ;_ end of while
                                   (reverse lst)
                                   ) ;_ end of LAMBDA
                                 )
                                '("    ok_cancel;" "   }")
                                ) ;_ end of append
            (write-line item dcl_handle)
            ) ;_ end of foreach
          (close dcl_handle)
          (setq dcl_id (load_dialog dcl_file))
          (new_dialog "dlg" dcl_id)
          (action_tile "accept" "(done_dialog 1)")
          (action_tile "cancel" "(done_dialog 0)")
          (setq dcl_res (start_dialog))
          (unload_dialog dcl_id)
          ) ;_ end of progn
   (alert "Эт как?")
   ) ;_ end of if
 ) ;_ end of defun
Убрал нумерацию, мне она не нужна.
Но появилось 2 вопроса, надеюсь поможешь!
Первый. Вводя количество штуцеров 20 и более, он выдает что размер диалогового окна не влазиет. Как можно это сделать? Очень часто количество наименований штуцеров бывает больше 20, и за 30 иногда бывает.
Второй вопрос. Я ввожу все данные, но он их совсем не запоминает. Я не могу понять как заставить запоминать все данные, введенные в ячейках.
Надеюсь подскажешь!
Заранее благодарю.
protorgovec вне форума  
 
Непрочитано 05.09.2018, 15:24
#29
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Вариантов несколько.
1. Организовывать перечень полей не только в колонки, но и в строки
2. Сделать несколько диалогов с кнопками "вперед-назад"
3. Уйти с dcl в сторону C# / VB.NET ...
А для запоминания посмотри в сторону т.н. callback-функций (насколько я помню, в справке по load_dialog они описывались).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.09.2018, 15:24
#30
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Обратитесь к БольшомуБоссу. Доложите, что для роста производства и прибыли лично БольшогоБосса крайне необходимо конструирование диалогов в "этой проге".
Пущай БольшойБосс вменит в обязанности админам разрабатывать по вашим заданиям и в кратчайшие сроки всё необходимое, а не ставить палки в колеса. Онижепрограммисты. Зря что-ли их кормят?

Завтра же "эта прога" и любая другая появится у вас.

И я тоже советую - не тратьте время на DCL. Быстрее освоить любую современную систему разработки.
Они у нас не программисты, просто айтишники. Их задача, что бы работали компы и принтеры. Программистов у нас нет, приходится все своими силами делать!

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
1. Организовывать перечень полей не только в колонки, но и в строки
Можешь в моем примере внести коррективы, как это сделать?

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
3. Уйти с dcl в сторону C# / VB.NET ...
Боюсь я переходить. Ощущение, что если перейду, вообще запутаюсь, все брошу тяжеловато мне с программированием.
protorgovec вне форума  
 
Непрочитано 05.09.2018, 15:49
#31
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Я тоже боюсь - а приходится время от времени что-то на других языках рисовать. Просто потому, что на лиспе можно сделать не все...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.09.2018, 15:49
1 | 1 #32
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Боюсь я переходить. Ощущение, что если перейду, вообще запутаюсь, все брошу
Тратя на решение лишь одной из подзадач - создание диалогов - кучу времени, можете прийти к тому же результату)

В лиспе нет ни классов, ни пространств, ни нормальной современной среды разработки - вся организационная составляющая сводится к разнесению по файлам и попыткам следования определенной системы наименований. Куча времени и усилий тратится на решение проблем по сути застывшего в своем развитии языка вместо самой задачи. А примеров по тому же .Net в инете - как грязи, с картинками, роликами и т.п.) Причем можете часть интерфейса писать и отлаживать вообще вне акада прямо в студии (если грамотно разделите функционал кода), а потом состыковать.
Сергей812 вне форума  
 
Непрочитано 05.09.2018, 16:21
1 | 1 #33
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Боюсь я переходить.
тогда упрашивай админов
http://opendcl.com/
Vov.Ka вне форума  
 
Непрочитано 05.09.2018, 16:35
#34
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


вон оно как! про лазарус в этой теме писать нельзя, а про визуал студию можно. да у вас тут секта свидетелей визуальной студии.
protorgovec, извиняй больше помогать не стану, а то святой админ кулик лексей анафеме предаст.
CalcProg вне форума  
 
Непрочитано 05.09.2018, 16:39
1 | 1 #35
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Тратя на решение лишь одной из подзадач - создание диалогов - кучу времени, можете прийти к тому же результату)
А можно сделав один раз диалог (или заставив бродяг-айтишников) использовать его в сотнях программ.

В очередной раз привожу примеры - универсальное иллюстрированное XML-меню. В него можно занести любые данные, причем с описаниями и иллюстрациями. Само меню находится в текстовом файле, который изменяют и дополняют даже "смышленые тетки".

Прикладной программист в ЛИСП просто вызывает функцию наподобие
Код:
[Выделить все]
 (ru-xml-select-macro full_xml_file_name  dlg_caption)
Эта функция покажет диалог, даст возможность с ним работать, включая изменение "на лету" иллюстраций. При выборе какого-то пункта диалог вернет в ЛИСП строку из атрибута macro.

А строка меню имеет вид наподобие
Код:
[Выделить все]
   <item name="Опора ОПХ2-100.108 для трубы Ду 100" image="3d\support\ru_3d_oph2_2.png" comment="Опора с бугелем по ГОСТ 14911-82" macro="(ru-3d-support-oph2-2 108.0 12.0 128.0 3.0 50 100 170 20 100 38 45 120)" /> 
В примере строка macro
Цитата:
(ru-3d-support-oph2-2 108.0 12.0 128.0 3.0 50 100 170 20 100 38 45 120)
будет передана в ЛИСП. А там должна быть уже чисто лисповская функция рисования с именем ru-3d-support-oph2-2 и аргументами, включающими необходимые размеры.

И такой единственный диалог может быть использован в 90% программ. Да еще несколько могут пригодиться - выбор из списка, ввод числе и т.п. Сделать их проще, чем мучиться с одним DCL, в котором то строки не входят, то всё растягивается.

У меня сделано в Delphi, но точно так же может быть сделано в любой нормальной среде программирования. А вот само рисование удобней делать в ЛИСП.
Миниатюры
Нажмите на изображение для увеличения
Название: xml_3d_kip.png
Просмотров: 35
Размер:	114.5 Кб
ID:	205943  Нажмите на изображение для увеличения
Название: xml_3d_pipe_support.png
Просмотров: 27
Размер:	21.1 Кб
ID:	205944  Нажмите на изображение для увеличения
Название: xml_fans_vr300_45.png
Просмотров: 22
Размер:	12.2 Кб
ID:	205945  Нажмите на изображение для увеличения
Название: xml_vent_duct_asp.png
Просмотров: 19
Размер:	13.7 Кб
ID:	205946  Нажмите на изображение для увеличения
Название: xml_tables_ved_type_details.png
Просмотров: 15
Размер:	9.5 Кб
ID:	205947  

ShaggyDoc вне форума  
 
Непрочитано 05.09.2018, 16:39
#36
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


CalcProg, и Lazarus, и VS, и C++, и ассемблер - да хоть кого! - упоминай сколько угодно. Но вы же начали что-то обсуждать. Причем обсуждать очень странно, часть на форуме, часть явно через ЛС. Я и говорю - либо обсуждение явно нового проекта, не относящегося к lsp/dcl, вести в ЛС, либо в новой теме.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.09.2018, 07:30
#37
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
3. Уйти с dcl в сторону C# / VB.NET ...
Алексей, добрый день. Скажи пожалуйста. Могу ли я полностью уйти с lisp на C#, при этом составлять код в VB.Net совсем не используя lisp? и только с помощью C# делать в автокаде все что угодно?
protorgovec вне форума  
 
Непрочитано 06.09.2018, 07:53
#38
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
Могу ли я полностью уйти с lisp на C#, при этом составлять код в VB.Net совсем не используя lisp? и только с помощью C# делать в автокаде все что угодно?
можешь, только VB.Net и C# - разные ЯП
trir вне форума  
 
Автор темы   Непрочитано 06.09.2018, 08:09
#39
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от trir Посмотреть сообщение
можешь, только VB.Net и C# - разные ЯП
Во, узнал насколько я туп теперь знаю что это разные языки Хорошо, могу ли я на платформе Visual studio пользуясь языком C# делать все что угодно в автокаде. Вообще не используя lisp?
protorgovec вне форума  
 
Непрочитано 06.09.2018, 08:23
#40
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


конечно, есть вещи которые можно сделать только на lisp'е - работа с динамическими блоками например, но даже на lisp'е это очень не просто
а так по функционадьности NET API уступает только ObjectARX

Последний раз редактировалось trir, 06.09.2018 в 08:33.
trir вне форума  
 
Автор темы   Непрочитано 06.09.2018, 08:32
#41
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от trir Посмотреть сообщение
конечно
А вообще, какой ЯП самый мощный?
protorgovec вне форума  
 
Непрочитано 06.09.2018, 08:50
#42
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


c++, но это не правильный вопрос ;=)
trir вне форума  
 
Автор темы   Непрочитано 06.09.2018, 08:53
#43
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от trir Посмотреть сообщение
c++
Может мне тогда, раз уж я ни один из них не знаю, сразу на C++ переходить? На какой платформе пишется код? В Visual Studio это возможно?
protorgovec вне форума  
 
Непрочитано 06.09.2018, 08:55
#44
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Цитата:
Сообщение от trir Посмотреть сообщение
есть вещи которые можно сделать только на lisp'е - работа с динамическими блоками например
Не вводите в заблуждения. Работа с динамическими блоками в .NET реализована более чем полно, часто встречал обратное, некоторые вещи которые можно делать с дин блоками в NET, в лиспе не получиться.

Если Вам не нужны собственные объекты, то смысла лезть в C++ (ObjectARX) лично я не вижу, да и если нужны... то же варианты есть. Для инженера возможностей C# более чем достаточно.
Boxa вне форума  
 
Автор темы   Непрочитано 06.09.2018, 08:58
#45
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от Boxa Посмотреть сообщение
Не вводите в заблуждения. Работа с динамическими блоками в .NET реализована более чем полно, часто встречал обратное, некоторые вещи которые можно делать с дин блоками в NET, в лиспе не получиться.

Если Вам не нужны собственные объекты, то смысла лезть в C++ (ObjectARX) лично я не вижу, да и если нужны... то же варианты есть. Для инженера возможностей C# более чем достаточно.
мне нужен язык, с помощью которого я сделаю все что угодно в автокаде. Вообще не используя иные ЯП
protorgovec вне форума  
 
Непрочитано 06.09.2018, 09:05
#46
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
В Visual Studio это возможно?
возможно

Цитата:
сразу на C++ переходить?
не стоит, он сложнее и писать на нём придётся больше
trir вне форума  
 
Непрочитано 06.09.2018, 09:08
#47
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Все что угодно и на С++ сделать не получиться, т.к. набор инструментов ограничен производителем ПО, но да, для С++ набор инструментов самый большой.
Однако и порог вхождения в этот язык несколько выше чем на .NET, оправдано ли это... если хотите стать проф. программистом, то да, если вам нужно решать инженерные задачи, то смысла тратить на это время нет.
Впрочем, решать Вам.
Цитата:
Сообщение от protorgovec Посмотреть сообщение
Вообще не используя иные ЯП
Я не использую другие языки, для акада пишу на С#, пока проблем не было, в "потолок" не уперся.
Boxa вне форума  
 
Непрочитано 06.09.2018, 09:10
#48
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
Я не использую другие языки, для акада пишу на С#
уверен? RegEx, SQL, XML, LINQ
trir вне форума  
 
Автор темы   Непрочитано 06.09.2018, 09:11
#49
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Всем спасибо! Ухожу с данного блога, встретимся с новыми вопросами уже в C#
protorgovec вне форума  
 
Непрочитано 06.09.2018, 09:18
#50
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Offtop:
Цитата:
Сообщение от protorgovec Посмотреть сообщение
мне нужен язык, с помощью которого я сделаю все что угодно в автокаде.
пишите сразу тогда уж свой акад))

не язык программирования определяет "потолок" возможностей человека - просто lisp наименее подходящий для задач с развитыми интерактивными диалогами. Зачем вообще его выбрали, какой "профи" вам это посоветовал...

Цитата:
Сообщение от trir Посмотреть сообщение
уверен? RegEx, SQL, XML, LINQ
хм?
Сергей812 вне форума  
 
Непрочитано 06.09.2018, 09:22
#51
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


начинай
trir вне форума  
 
Автор темы   Непрочитано 06.09.2018, 09:30
#52
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Offtop:
пишите сразу тогда уж свой акад))

не язык программирования определяет "потолок" возможностей человека - просто lisp наименее подходящий для задач с развитыми интерактивными диалогами. Зачем вообще его выбрали, какой "профи" вам это посоветовал...


хм?
Да ни кто не советовал. Просто узнал что при автокаде есть lisp, и начал его изучать
protorgovec вне форума  
 
Непрочитано 06.09.2018, 09:37
#53
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Цитата:
Сообщение от trir Посмотреть сообщение
уверен? RegEx, SQL, XML, LINQ
Вполне, если можно так сказать, это библиотечные функции (расширения) языка и почти всё перечисленное не является самостоятельными языками программирования (SQL - это то самое почти) для работы с базами можно и ADO.NET использовать и не сильно то в SQL залезать.

Offtop: Language Integrated Query (LINQ) — проект Microsoft по добавлению синтаксиса языка запросов, напоминающего SQL, в языки программирования платформы .NET Framework. Ранее был реализован в языках C# и Visual Basic .NET.
RegEx - System.Text.RegularExpressions.Regex Пространство имен: System.Text.RegularExpressions т.е NET библиотека и т.д.

Таким темпом WPF, WinForms, JSON и прочие технологии можно за отдельный язык продать...


Что то сильно в оффтоп ушли, админ огорчиться.

Последний раз редактировалось Boxa, 06.09.2018 в 09:44.
Boxa вне форума  
 
Непрочитано 06.09.2018, 09:54
#54
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
Я не использую другие языки, для акада пишу на С#
regular expressions — формальный язык поиска
structured query language — «язык структурированных запросов»
XML - eXtensible Markup Language
Language Integrated Query (LINQ)
JSON - JavaScript Object Notation, фактически JavaScript
WPF - XAML eXtensible Application Markup Language

фактически когда мы пишим на C# - мы используем и другие специалезированные языки
trir вне форума  
 
Непрочитано 06.09.2018, 10:04
#55
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Offtop: trir, ну да, а VBA, C#, F# - вообще не языки, в названии то слова Language нет =о)
Перед началом дискуссии мы не договорились о понятиях, а потому под ЯП каждый понимает что то свое, при таком подходе развивать данный диалог, тем более не относящейся к теме топика, не вижу смысла.
Boxa вне форума  
 
Непрочитано 06.09.2018, 10:05
#56
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от trir Посмотреть сообщение
regular expressions — формальный язык поиска
structured query language — «язык структурированных запросов»
XML - eXtensible Markup Language
Language Integrated Query (LINQ)
JSON - JavaScript Object Notation, фактически JavaScript
WPF - XAML eXtensible Application Markup Language
а еще используем английский, родной литературный и не совсем литературный (в трудные моменты творчества) язык.. Имхо, ТС достаточно знать, что большая часть всего этого есть в .NetFramework, без которого просто не запуститься акад - и поэтому он смело может использовать все это в своей программе - не боясь за работоспособность на других машинах. С учетом версий и разрядности акада, конечно...
Сергей812 вне форума  
 
Непрочитано 06.09.2018, 10:18
#57
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от trir Посмотреть сообщение
конечно, есть вещи которые можно сделать только на lisp'е - работа с динамическими блоками например, но даже на lisp'е это очень не просто
а так по функционадьности NET API уступает только ObjectARX
Без Lisp совсем не обойтись. Хотя бы для того, чтобы запустить любую другую программу.

И многие вещи на LISP делаются гораздо проще базовыми средствами самого языка, без подключения каких-то библиотек.
Вот эта строчка
Код:
[Выделить все]
 (apply 'mapcar (cons 'list lst))
заменяет несколько страниц кода на "нефункциональных языках". Это "переворачивание" местами колонок и строк в какой-нибудь таблице. Любых размеров. Да и вообще работа со списками.

Конкретно в Автокад на Лисп удобнее делать многие вещи. Типичный пример - вставить много раз блок, но так, чтобы он висел на курсоре, его было видно. А не сначала указать точку, а потом в нее вставится блок.

Просто надо знать и умело применять разные средства. Конечно, для диалогов ЛИСП подходит менее всего.
ShaggyDoc вне форума  
 
Непрочитано 06.09.2018, 10:20
#58
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


protorgovec, я бы не советовал бросать лисп.
я лично разбиваю программу на две части.
ввод данных и вычисление в лазарусе.
черчение в автолиспе.

а то что вижуальщики тебе напели, что в Си# всебудет легко и просто не верь.
начни с яп по проще VB.net.

Последний раз редактировалось CalcProg, 06.09.2018 в 10:31. Причина: замечание от гуру
CalcProg вне форума  
 
Непрочитано 06.09.2018, 10:22
#59
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
а потому под ЯП каждый понимает что то свое
я не говорю, чтоэто ЯП, я говорю что эти языки, которые нужно знать
например для работы с WPF полезно (хотя и не обязательно) знать XAML и XML

Цитата:
начни с яп по проще VBA.net.
VB.net, я так начинал, а ещё пришлось переводить кучу примеров с C# на VB.net- в принципе C# я так и выучил
начинать с VB.net может быть проше, только если есть опыт с VBA

Цитата:
я лично разбиваю программу на две части.
я тоже так делаю, просто это разные классы

Цитата:
Хотя бы для того, чтобы запустить любую другую программу.
необязательно

Последний раз редактировалось trir, 06.09.2018 в 10:31.
trir вне форума  
 
Непрочитано 06.09.2018, 10:28
#60
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Offtop:
Цитата:
Сообщение от CalcProg Посмотреть сообщение
VBA.net.
VB.Net может?)


----- добавлено через ~5 мин. -----
Цитата:
Сообщение от trir Посмотреть сообщение
WPF полезно (хотя и не обязательно) знать XAML и XML
не путайте ТС - ему то как раз с XAML работать для создания интерактивных диалогов) Хотя может и WinForms обойдется..
Сергей812 вне форума  
 
Непрочитано 06.09.2018, 10:40
#61
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


в WPF также как и в WinForms можно создавать окошки мышкой и не глядя на XAML
trir вне форума  
 
Непрочитано 06.09.2018, 11:15
#62
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Offtop:
Цитата:
Сообщение от trir Посмотреть сообщение
в WPF также как и в WinForms можно создавать окошки мышкой и не глядя на XAML
можно любую технологию испоганить - действительно, зачем придумали стили, шаблоны и т.п. в XAML - когда можно просто мышкой накидать компоненты с палитры..
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Возможно ли такое в DCL и лиспе



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реконструкция подвала при свайных фундаментах, возможно такое решение? Наиль Основания и фундаменты 2 20.09.2013 10:43
Уменьшение теплоносителя после прогрева, возможно ли? vikkiners Отопление 2 24.07.2013 12:57
А возможно ли такое!??! Вопрос нефтяникам и буровикам Botan Разное 5 21.09.2009 20:12
XML и LISp - Такое возможно? Diman111 LISP 3 03.03.2008 19:06
Возможно сделать такое перекрытие? Alexcons_2 Конструкции зданий и сооружений 3 08.01.2008 14:45