A A A A Автор Тема: Изучаю Паскаль. Присоединяйтесь.  (Прочитано 30991 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #600 : 15 Июл 2024 [11:17:47] »
"Delphi имеет значительное преимущество по сравнению с другими популярными языками в области промышленной автоматизации потому что в Delphi до сих пор не сделали сборщик мусора."
Да!
Для изучающих. Обновлено краткое введение в современный Object Pascal для программистов на русском языке и не только  - https://castle-engine.io/modern_pascal_introduction_russian.html. Грек Камбурелис постарался собрать азы с примерами, а так при использовании VCL/FMX и прочих компонентов, скажем JEDI/TMS/UniGUI etc., мало кто на практике консольные приложения пишет с использованием writeln/readln. Давно используется более продвинутый человеко-машинный интерфейс GUI, иначе современный юзер не поймёт и не оценит. Но для краткого руководства такой подход вполне приемлем.   
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн LeftUser

  • *****
  • Сообщений: 33 904
  • Благодарностей: 1066
  • Кирилл ㋛
    • Сообщения от LeftUser
    • Часы
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #601 : 18 Дек 2024 [15:17:55] »
Ну как там ТС? Весь Паскаль изучил?  ;D ;D

@Аурипигмент

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #602 : 22 Дек 2024 [13:28:33] »
Ну как там ТС? Весь Паскаль изучил?  ;D ;D
@Аурипигмент

ТС весь Паскаль изучить никак не может, язык и компилятор развиваются быстрей, чем он изучает, а что-то ведь и забывается со временем, если нет постоянной практики. Скоро, весной, вот RAD Studio 12.3 обещают выкатить. Опять придётся изучать новые фишки.
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн CyberManiac

  • *****
  • Сообщений: 9 410
  • Благодарностей: 532
  • Я ♥ オリオン!
    • Сообщения от CyberManiac
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #603 : 22 Дек 2024 [14:29:10] »
ТС весь Паскаль изучить никак не может, язык и компилятор развиваются быстрей, чем он изучает
Да как-то не особо и развиваются.

Скоро, весной, вот RAD Studio 12.3 обещают выкатить.
Delphi - не Паскаль. Сама Емба повелела считать его отличным (от других) языком программирования.
Трэш, угар и астрономия!
沖縄最高

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #604 : 22 Дек 2024 [17:18:08] »
Да как-то не особо и развиваются.
А это и хорошо, что базовые конструкции не особо изменяются, а стабильны, надёжны и читабельны. Развиваются вспомогательные средства, библиотеки и пакеты компонентов, как и положено в этом деле.
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #605 : 22 Дек 2024 [17:27:43] »
Delphi - не Паскаль. Сама Емба повелела считать его отличным (от других) языком программирования
Мало ли что Эмба заявляет, им надо рекламировать свой продукт, среду программирования, т.е. IDE, а по существу Дельфи  - обычный объектно-ориентированный Паскаль. Зайди на гитхаб или наш гитверс и ты обнаружишь, что у них нет такого языка как Дельфи, но есть Паскаль. Хотя при выборе фильтра gitignore можно выбрать и мусорные файлы среды программирования Delphi, сделать им игнор.
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Karagy

  • *****
  • Сообщений: 1 358
  • Благодарностей: 45
    • Сообщения от Karagy
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #606 : 27 Дек 2024 [02:08:32] »
а по существу Дельфи  - обычный объектно-ориентированный Паскаль. Зайди на гитхаб или наш гитверс и ты обнаружишь, что у них нет такого языка как Дельфи, но есть Паскаль.
Это потому что вы некомпетентны в данном вопросе.
Дельфи - среда разработки, а не язык. Язык - Component Pascal. И он есть в списке языков на гитхабе.

По поводу развития - развиваются и Дельфи и Фрипаскаль. Интересующиеся могут найти тематические группы в telegram. Наример https://t.me/Delphi_Lazarus

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #607 : 28 Дек 2024 [21:58:47] »
Это потому что вы некомпетентны в данном вопросе.
Дельфи - среда разработки, а не язык. Язык - Component Pascal. И он есть в списке языков на гитхабе.
Вы невнимательно прочитали то, что было написано мной выше, что Delphi - IDE, среда программирования, а Component Pascal, компетентный вы наш, это совсем другое, и не есть Pascal with Objects. Погуглите.
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #608 : 19 Апр 2025 [23:28:41] »
Изучающим Паскаль - там исходники модулей внутри присутствуют. Монтенбрук и Пфлегер при создании применялись.
Звёздный Глобус в109.
На Delphi 12.3 скомпилировался, но работать на win 11 отказывается. Проблема в десятичной запятой и отсутствии поддержки юникода. Вы используете при обработке данных в программе десятичную запятую, а в файлах данных каталогов разделителем целых и десятичных частей числа появляется то точка, то запятая. При отладке кода к тому же в некоторых файлах возникают ещё и китайские иероглифы, хотя при открытии этих файлов данных их нет. Видно использовалась какая-то старая кодировочная таблица. Вообще по замыслу с исходниками программа хорошая, поэтому я включу её в репозиторий в аккаунт https://gitverse.ru/glscene и хотелось бы чтобы вы сделали её апгрейд, доведя до рабочего состояния. Тем более, что интерфейс на русском языке и есть все исходники плюс книга с описанием задач.
« Последнее редактирование: 20 Апр 2025 [12:55:57] от Павел Васильев »
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #609 : 20 Апр 2025 [13:49:51] »
У меня тоже 7, и тоже компилируется нормально.
Это уже при запуске .exe ( или готового, или свежескомпилированного ) - проблемы точка-запятая.
В файле defdir исправил 14,0 на 14.0 , но все равно где-то в других файлах есть запятые.

А в настройках ОС на запятую неохота переходить. Я не случайно на точку перешел. В Паскале ( да и с Си ) в цифровых константах - точка. Например, в константных массивах.
Так у вас заработала или нет? У меня OC тоже настроена на десятичную точку, переключать на российскую локализацию нельзя - другие программы станут глючить. Поэтому я попытался было добавить в проект этого Звёздного глобуса при инициализации FormatSettings.DecimalSeparator := '.' точку. Не тут то было - там в коде нашёл штук десять разделителей при считывании строк из файла, напрямую указана запятая ...+','+... Заменил на точку, откомпилировал, но при запуске теперь пошли иероглифы, поскольку проект старый на дельфи 7, в нём не поддерживается юникод - надо сменить пару массивов символов char на ансичар, перейти на Unicode, но это уже много исправлений в коде.  Нашёл ещё несколько запятых после нуля (см.скрин), т.е. автор решил строго придерживаться нашего ГОСТа на представление чисел с дробной частью. А надо было считывать данные из файла через TStringList c готовым выбором типа разделителя.

Ладно, расставил точки, в каталогах тоже точки, так что должно теперь работать при любой локализации Windows. Загрузил апрейд StarGlobe с экзешником в git репозиторий по адресу https://gitverse.ru/glscene/starglobus. Вроде всё работает, клонируйте репозиторий себе на машину и пользуйтесь freeware.
« Последнее редактирование: 20 Апр 2025 [22:15:01] от Павел Васильев »
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #610 : 20 Апр 2025 [22:27:32] »
Проверил работу программы StarGlobus.exe, что добавил в папку source, на  текущую дату - координаты тел похоже выдаёт правильно, так что неплохо, она с исходниками и русифицирована.  Графика 2D, но для обучения вполне достойная прога, и вообще хороший стартап звёздного глобуса для дальнейшего улучшения и развития проекта под GaLaXy Engine в 3D. Подставить другие каталоги и более точные эфемериды. Если переписать всё на графику OpenGL и Vulkan, то можно сделать красиво и более точно.
Исправил ещё несколько глюков и подредактировал пару форм, чтобы было понятно что откуда выводится на глобус.   
« Последнее редактирование: 21 Апр 2025 [14:53:40] от Павел Васильев »

Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Guy Fawkes II

  • ****
  • Сообщений: 312
  • Благодарностей: 197
  • Мне нравится этот форум!
    • Сообщения от Guy Fawkes II
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #611 : 22 Апр 2025 [13:00:05] »
Павел Васильев, очень признателен за развитие программы!
Там Дельфи 6, не 7, если что. Эфемериды VSOP-87. С запятыми оказалась проблема, но я вижу, что класс NGC вы уже поправили. Быстро не обещаю, но что-то смогу переделать и выложить, компиляцию есть смысл делать, на чем вы её делаете. Запросы выкладывайте здесь.
Что там есть из серьезных недочетов: нет нутации, нет собственных движений звезд.
Но это надо после всего и подумать как ( при переходе к 3D).
Успехов в нашем проекте!





Рефрактор ахромат 126/1200 самодельный на основе объектива DKD,  зрительная труба "Юкон-100", бинокли Veber 30х60 (24x47) и Military Marine 60x90 (9x58,5), а также

Планетарий "Звездный глобус"

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #612 : 22 Апр 2025 [15:51:08] »
Там Дельфи 6, не 7, если что. Эфемериды VSOP-87. С запятыми оказалась проблема, но я вижу, что класс NGC вы уже поправили.
Да, проблема совместимости версий для компиляции старых проектов в Дельфи решается обычно гораздо проще, чем в Visual Studio C++.  Там вообще порой конец света. Если просто на С, то очень хорошо, всегда можно сделать DLL в Rad Studio и конвертировать заголовочники в Delphi. Поэтому,  обязательно переходите на последнюю Delphi, установите полную текущую Rad Studio 12.3, не иначе. Можно конечно отдельно установить только бесплатную  Delphi Community Edition v.11, вполне функциональна, но для совместной работы с C/C++ либами её недостаточно. В астрономии сейчас фактически все специальные либы есть на С, надо их подключать к дельфийскому интерфейсу. Поэтому ставьте сразу Рад Студию.
По VSop-87.  У меня в комплексе AstrobloQ есть более новый vsop2013, его и надо приспособить.
Далее, пока в StarGlobus используется правильный но громоздкий принцип считывания данных из текстовых файлов, всё целесообразно переписать на StringList.LoadFromFile(...) c предварительным FormatSettings.DecimalSeparator := '.'; что должно сильно сократит код и решит проблему с десятичным разделителем.
Самое главное - перевод Звёздного Глобуса в 3D.  Здесь выбора никакого нет - надо использовать OpenGL и готовить почву для Vulkan. В RAD 12.3 все инструменты и компоненты для этого уже есть, в том числе в движке GaLaXy Engine. Например, объект сцены TGLSkyDome с параметрами настройки небосвода с небесными телами, загружаемыми из звёздных каталогов. Имеются такие средства как освещение,  наблюдение, рендеринг, навигация и прочее. Помещаем камеру наблюдателя внутрь глобуса и получаем обычный планетарий на небосводе. Потом можно добавить опций. А готовую программу StarGlobus.exe отдельно от исходников извлекать смысла нет, пусть смотрят код кому это интересно. Там же в репозитории в папке source будет обновляться бинарник текущей версии, а в папке bin могут храниться стабильные предыдущие версии. ЛА клонирует себе на компьютер репозиторий и пользуется  StarGlobus.exe без лишних проблем.
« Последнее редактирование: 22 Апр 2025 [15:57:12] от Павел Васильев »
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #613 : 22 Апр 2025 [20:47:11] »
компиляцию есть смысл делать, на чем вы её делаете. Запросы выкладывайте здесь.
Что там есть из серьезных недочетов: нет нутации, нет собственных движений звезд.
Я обнаружил, что на вкладке "Подробно" остались глюки в чек боксах (Солнце, Луна,Планеты) - в них видимо слетели клики на событиях, а названия не понятны, что подключать вам видней. Желательно переименовать клики, например, N7Click, на понятные по смыслу. Ещё, я добавил префиксы к названиям модулей - Astro.Types, Astro.Spherica и т.д., чтобы отличать юниты без конфликтов от других библиотек, той же Vcl.Types и пр. Файлы формы идут с префиксом fm..., имена немодальных форм сохраняют префикс Form... , а модальные переименовываются на frm..., чтобы потом их не путать и не получать access violations. 
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #614 : 23 Апр 2025 [09:46:48] »
Что там есть из серьезных недочетов: нет нутации, нет собственных движений звезд.
Процедуру расчёта нутации я добавлю в модуль Astro.Processing, да и юнит vsop2013 тоже в source папку. Кроме того, что бросается в глаза - надо все каталоги поместить в отдельную папку data, чтоб не путались под руками с исходниками. Пока после щелчка центрирования флажки выбора объектов (Солнце, Луна, Планеты, NGC) на изображении глобуса перестают работать, надо разбираться в чём дело. Потом компиляцию перенаправить в корень репозитория проекта , тогда можно будет из готовой программы с экзешником просто удалить директорию source и всё будет работать.
...
Перенёс данные в папку data. Теперь структура репозитория такая, что проект и программа в корне, данные в data, а для пользователей можно удалить source, заархивировать и setup готов.
Как это сделано? на FormCreate добавлено   DataPath := GetCurrentDir(); SetCurrentDir(DataPath  + '\data');,
а потом, там где у тебя загружаются данные в модуле Astro.Dwaing вместо закомментированных строк к примеру так :
  CloseFile(f);
  AssignFile(f, GetCurrentDir + '\ngc2000.dat'); // AssignFile(f, defdir + '\ngc2000.dat');
  Reset(f);
Всё работает, добавил в меню Вид простую схему Солнечной системы пока в 2D, но её конечно надо настраивать, а потом вообще заменить на нормальную в 3D, с возможностью выбора изменения масштаба расстояний между планетами для иллюстрации.
На вкладке "Подробнее" по прежнему переодически выскакивает access violation и зависание, думаю что-то в подключении таймера - перерисовка тормозит по полной. 
Зарегистрируйся на gitverse.ru, поставь в проекте https://gitverse.ru/glscene/starglobus справа вверху избранное (звёздочку) и слежу (глаз) и я добавлю тебя в авторы репозитория с правом commit&push. У меня сейчас первоочередной проект Galaktika для моделирования эволюции.   



« Последнее редактирование: 23 Апр 2025 [12:46:28] от Павел Васильев »
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Павел Васильев

  • *****
  • Сообщений: 884
  • Благодарностей: 30
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #615 : 23 Апр 2025 [14:14:34] »
Эфемериды VSOP-87.
Добавил поддержку Astro.Vsop2013, однако сами готовые эфемериды я не включил в data, они очень много весят:
// оригинальные имена файлов эфемерид - каждый объёмом по 400 MB !
  TXT_FILES: array [1 .. NUM_FILES] of string = (
    'VSOP2013.m4000',
    'VSOP2013.m2000',
    'VSOP2013.m1000',
    'VSOP2013.p1000',
    'VSOP2013.p2000',
    'VSOP2013.p4000'
  ); 
Так что это потом можно организовать подгружение пользователем из облаков.
Тем не менее, на вкладке "Подробно" продолжает выскакивать откуда-то ошибка, теперь уже о точке после пробела '  .' на кнопке показать NGC. Поищите откуда и в чём загвоздка, и вообще навсегда завязывайте с десятичной запятой в астрономических данных и программах. С ней всегда одни только проблемы и бесконечная мышиная возьня с кодом. К сожалению, у нас действует ГОСТ, который настойчиво обязывает её использовать, особенно в арифметике и бухгалтерии. Его отменить моглы бы на самом высоком уровне академики, но никому дела до этого нет, хотя страна теряет, думаю, миллиарды долларов убытка только на локализации зарубежных пробуктов, не считая таких идиотских ошибок как при разработке софта.  А Microsoft довольна - хотите десятичную запятую? Нате вам, кушайте на здоровье, а мы вот с китайцами и индусами (90% населения Земли) и во всех научных публикациях книг и в программировании будем использовать десятичную точку. Издеваются.
« Последнее редактирование: 23 Апр 2025 [14:23:22] от Павел Васильев »
Симулятор нооэволюции Млечного Пути https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 874
  • Благодарностей: 184
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #616 : 15 Июн 2025 [20:29:04] »
Чо-то я по прежнему не догоняю автора на поворотах. ???
Вот такая задача:
Цитата
Создайте процедуру, печатающую все числа, кроме единицы, на которые
без остатка делится число N, где N — параметр процедуры. Напишите программу
для проверки этой процедуры.
Моя прога работает:
program Z_20_2;
var N: integer;

procedure Dolka(arg: integer);
var k: integer;
begin
for k:=2 to arg do
if (arg mod k) = 0 then writeln(k);
end;
BEGIN
writeln('Введите число : '); readln(N);
writeln('Это число делится без остатка на числа: ');
Dolka(N); readln;

END.
Но автор даёт ответ такой:
procedure Test(N : integer);
var i: integer;
begin
for i:=2 to N div 2 do
if N mod I = 0 then Writeln(i);
Readln;
end;
begin
end.
Test(12);
Test(18);
end/
Принципиальное отличие состоит в том, что счётчик цикла считает не до N, как у меня, а до целочисленного деления N на 2. Ответы отличаются тем, что у меня в список чисел попадает само заданное число.
Зачем автор применил N div 2 и у кого правильно? :-[
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Vladimir3621

  • *****
  • Сообщений: 25 087
  • Благодарностей: 1049
    • Сообщения от Vladimir3621
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #617 : 15 Июн 2025 [20:38:04] »
У автора все правильно: очевидно же, что на числа, большие N div 2, N без остатка делиться не будет :) Ваш пример тоже будет работать, но зачем заставлять процессор заниматься лишней фигней, если можно сразу дать ему оптимальное задание.

Это вы одиноки во вселенной. А нас - рать.

Оффлайн Karagy

  • *****
  • Сообщений: 1 358
  • Благодарностей: 45
    • Сообщения от Karagy
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #618 : 15 Июн 2025 [21:27:28] »
Цитата
Создайте процедуру, печатающую все числа, кроме единицы, на которые
без остатка делится число N, где N — параметр процедуры. Напишите программу
для проверки этой процедуры.
Автор хочет факторизацию целого числа. Но, что-бы не спугнуть клиента, выражается простыми словами.
https://ru.wikipedia.org/wiki/Факторизация_целых_чисел
https://ru.wikipedia.org/wiki/Перебор_делителей

Оффлайн CyberManiac

  • *****
  • Сообщений: 9 410
  • Благодарностей: 532
  • Я ♥ オリオン!
    • Сообщения от CyberManiac
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #619 : 15 Июн 2025 [22:10:05] »
У автора все правильно: очевидно же, что на числа, большие N div 2, N без остатка делиться не будет :)
Внезапно, любое число делится без остатка на само себя.
Трэш, угар и астрономия!
沖縄最高