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

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

Оффлайн Karagy

  • *****
  • Сообщений: 1 746
  • Благодарностей: 61
    • Сообщения от Karagy
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #680 : 12 Авг 2025 [11:12:00] »
Дев для Паскаля и КодеБлок для C++ после компиляции вставляют в ехе-шник чего-то типа вируса, Вирустотал на них ругается и программа здоровая получается.
Это false-positive репорты. Даже на пустую консольную программу от дельфи - ругаются 17 антивирусов. Если она x32. А если билд x64 - то почти никого.
На VT из всего зоопарка всего два-три адекватных антивируса. Всё остальное - "хоровое пение".
« Последнее редактирование: 12 Авг 2025 [23:30:36] от Karagy »

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

  • *****
  • Сообщений: 1 048
  • Благодарностей: 33
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #681 : 12 Авг 2025 [11:57:57] »
В общем, вопрос выношу на общее обсуждение. Переименовать, или нет?
Да не надо  ничего переименовывать, пусть будет как есть. Вам что, жалко тему про Паскаль в разделе иметь, нет места? Если вам трудно, я  за вас новую про программирование создам и там отвечу на ваш вопрос:
"У меня вызывает затруднения найти алгоритм, такой же, какой применяет автор в своих ответах".
Это общий вопрос для всех ЯП.
Git-программирование астросистем https://gitverse.ru/astrogeoscenter

Оффлайн Vladimir3621

  • *****
  • Сообщений: 26 934
  • Благодарностей: 1154
    • Сообщения от Vladimir3621
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #682 : 12 Авг 2025 [12:17:20] »
попробуйте https://github.com/Embarcadero/Dev-Cpp
Дев для Паскаля и КодеБлок для C++ после компиляции вставляют в ехе-шник чего-то типа вируса, Вирустотал на них ругается и программа здоровая получается.
Проверьте опции компилятора, раньше антивирусы очень нервно реагировали на отладочную информацию в exe-шниках. За счет нее же, кстати, и файл у вас может пухнуть.
Это вы одиноки во вселенной. А нас - рать.

Оффлайн Карат

  • *****
  • Сообщений: 934
  • Благодарностей: 72
  • Как много есть вещей, которые мне не нужны!
    • Сообщения от Карат
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #683 : 12 Авг 2025 [12:40:43] »
Если вам трудно, я  за вас новую про программирование создам
Вы программист, вам и карты в руки.
Нам не трудно создать тему, но автор темы должен наполнять ее осмысленным содержанием и поддерживать.
У меня лишь иногда появляются вопросы по программированию, поэтому создавать новую тему не вижу смысла.
Вчера весь вечер мучался над задачей: "как передать/возвратить массив из функции обратно в main() ? "
Все оказалось совсем не просто, пришлось создавать динамический массив с указателем на него, и возвращать указатель!
Трудный этот СИ, ой трудный.  Поэтому, и нужна порой помощь опытных программистов.


« Последнее редактирование: 12 Авг 2025 [12:49:58] от Карат »
SW Dob 300мм,   Celestron  200мм Dob.

Оффлайн LeftUser

  • *****
  • Сообщений: 34 945
  • Благодарностей: 1103
  • Кирилл ㋛
    • Сообщения от LeftUser
    • Часы
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #684 : 12 Авг 2025 [13:00:40] »
Вчера весь вечер мучался над задачей: "как передать/возвратить массив из функции обратно в main() ? "
Простейшая фигня. Передаешь в функцию указатель на указатель. Функция сама выделяет маллоком под него память и заполняет его. И далее возвращает управление в МАЙН. Главное не забыть его освободить, когда он уже не нужен.

void GetArray(unsigned char** ppNewArray)
{
   *ppNewArray = malloc(100); // выделяем 100 байт

   // как-то заполняем его
   for(int i = 0; i < 100; i++)
      *ppNewArray[i] = i;
}

void main()
{
   unsigned chat* pArray;

   GetArray(&pArray);

   // Что-то делаем с ним обращаясь как к массиву pArray[i]

   // Освобождаем его
   free(pArray);

}

Оффлайн Карат

  • *****
  • Сообщений: 934
  • Благодарностей: 72
  • Как много есть вещей, которые мне не нужны!
    • Сообщения от Карат
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #685 : 12 Авг 2025 [13:20:26] »
Простейшая фигня. Передаешь в функцию указатель на указатель.
Спасибо.
Вот это вот: "передаешь в функцию указатель на указатель..."  , еще трудно усвоить.
Павел создал новую тему, будем общаться теперь там.
« Последнее редактирование: 12 Авг 2025 [13:29:49] от Карат »
SW Dob 300мм,   Celestron  200мм Dob.

Оффлайн LeftUser

  • *****
  • Сообщений: 34 945
  • Благодарностей: 1103
  • Кирилл ㋛
    • Сообщения от LeftUser
    • Часы
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #686 : 12 Авг 2025 [13:32:10] »
Вот это вот: "передаешь в функцию указатель на указатель..."  , еще трудно усвоить.
Можно трактовать это так. В функцию мы передаём адрес переменной, которая является указателем на байт.
Имея этот адрес внутри функции, мы можем с ним работать как будто не покидая МАЙН. Так же можно передавать адреса на любые другие переменные (т.е. указатели).
Но вообще давно уже так не пишут. Чейчас есть мощная библиотека STL, входящая в стандарт. Правда это уже C++  :)

Оффлайн Vladimir3621

  • *****
  • Сообщений: 26 934
  • Благодарностей: 1154
    • Сообщения от Vladimir3621
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #687 : 12 Авг 2025 [13:48:06] »
В функцию мы передаём адрес переменной, которая является указателем на байт.
КМК, так ему понятнее будет: передаем адрес переменной в которой хранится адрес байта. Указатель - это всего лишь самая обычная переменная, только в ней хранится адрес чего-то. Это что-то может быть чем угодно, как типизированным, так и не типизированным. Указатель на указатель хранит в себе адрес того места в памяти, где лежит другой адрес :)

Павел создал новую тему, будем общаться теперь там.
Может стоит сюда ссылку на эту тему закинуть?
Это вы одиноки во вселенной. А нас - рать.

Оффлайн Карат

  • *****
  • Сообщений: 934
  • Благодарностей: 72
  • Как много есть вещей, которые мне не нужны!
    • Сообщения от Карат
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #688 : 12 Авг 2025 [14:21:35] »
Может стоит сюда ссылку на эту тему закинуть?

Да, конечно, она тут рядом:

https://astronomy.ru/forum/index.php/topic,224591.0.html
SW Dob 300мм,   Celestron  200мм Dob.

Оффлайн TM307

  • *****
  • Сообщений: 7 207
  • Благодарностей: 443
    • Сообщения от TM307
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #689 : 17 Авг 2025 [11:57:45] »
Это false-positive репорты. Даже на пустую консольную программу от дельфи - ругаются 17 антивирусов. Если она x32. А если билд x64 - то почти никого.
На VT из всего зоопарка всего два-три адекватных антивируса. Всё остальное - "хоровое пение".
Читал давно в интернете, что вот эти вставочки в ехе-шник делают компиляторы, чтобы фирмы-создатели компилятора могли отслеживать путь созданной программы и как она используется.
Отладочную информацию в компиляторах выключаю при создании ехе-шника. Так что на пухлость программ она не влияет.
Sky-Watcher SK767AZ1, BK1025AZ3; Dicom A900114-EQ3; МП 12х40/20х60; БПЦ Praktica DIANA 8x56, Veber Hunter 6x30

Оффлайн PIF7x50

  • ***
  • Сообщений: 105
  • Благодарностей: 4
    • Сообщения от PIF7x50
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #690 : 04 Ноя 2025 [19:27:09] »
На сабжевую тему - сегодняшняя статья на Хабре :)
https://habr.com/ru/articles/963014/

Оффлайн Ph_user

  • *****
  • Сообщений: 2 820
  • Благодарностей: 74
    • Сообщения от Ph_user
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #691 : 04 Ноя 2025 [23:08:53] »
весь вечер мучался над задачей: "как передать/возвратить массив из функции обратно в main() ? "

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

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

  • *****
  • Сообщений: 1 048
  • Благодарностей: 33
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #692 : 11 Ноя 2025 [12:15:03] »
Когда уровень програмы всего порядка мейн - там можно просто глобальные переменые и указатели в начале описать. Их будет везде видно.
Вы консольное приложение пишите на С и у вас один модуль? Тогда какие проблемы? Это структурное программирование, опишите функцию перед main() и вызывайте её в main() на здоровье. Другое дело если у вас ООП, и C++, тогда надо из модуля, где находится функция или класс вызвать обратно тот модуль где main(). Круговая порока. Еслмодули в виде ресурсов форм, то они должны быть моральными, тогда главная форма "увидит" изменения. Например, у вас есть файл с главной формой проекта FormMain и есть файл с формой всех
настроек FormSettings. Обе формы создаются сразу при запуске проекта. В этом случае все изменения в установках, опциях будут видны и доступны для обработки в главной форме.
Git-программирование астросистем https://gitverse.ru/astrogeoscenter

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

  • *****
  • Сообщений: 1 048
  • Благодарностей: 33
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #693 : 11 Ноя 2025 [12:16:09] »
Когда уровень програмы всего порядка мейн - там можно просто глобальные переменые и указатели в начале описать. Их будет везде видно.
Вы консольное приложение пишите на С и у вас один модуль? Тогда какие проблемы? Это структурное программирование, опишите функцию перед main() и вызывайте её в main() на здоровье. Другое дело если у вас ООП, и C++, тогда надо из модуля, где находится функция или класс вызвать обратно тот модуль где main().
Есл модули в виде ресурсов форм, то они должны быть модальными, тогда главная форма "увидит" изменения. Например, у вас есть файл с главной формой проекта FormMain и есть файл с формой всех
настроек FormSettings. Обе формы создаются сразу при запуске проекта. В этом случае все изменения в установках, опциях будут видны и доступны для обработки в главной форме.
« Последнее редактирование: 11 Ноя 2025 [12:24:52] от Павел Васильев »
Git-программирование астросистем https://gitverse.ru/astrogeoscenter

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

  • *****
  • Сообщений: 1 048
  • Благодарностей: 33
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #694 : 11 Ноя 2025 [19:03:40] »
Ха! На Хабре "на прошедшей неделе мы создавали собственную мобильную операционку на Rust, переписывали эмулятор ZX Spectrum с Go на C++, спорили о том, что лучше для обучения — Pascal или Python, и запускали «Тетрис» из 90-х на оригинальном железе." А на позапрошлой неделе наоборот "переносили программы с С++ на Go и спорили, что лучше для обучения - Python или Pascal". Даёшь больше языков, простых и объектно-ориентированых! Есть чем знатокам языков заняться  :-\
Git-программирование астросистем https://gitverse.ru/astrogeoscenter

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

  • *****
  • Сообщений: 1 048
  • Благодарностей: 33
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #695 : 13 Ноя 2025 [10:33:29] »
Кстати, в этой статье на Хабре автор показал на простых примерах кода преимущество PascalABC над Python. Хотя Питон сейчас в рейтинге языков Tiobe на 1-м месте. Это сравнение дано какой язык лучше для обучения основам программирования. Но сам автор признался, что его любимый конёк язык Kotlin и он, по всей видимости, вообще ничего не слышал о среде программирования Delphi и современном языке Object Pascal, который в ноябре поднялся на 8-ю строчку в рейтинге Tiobe из 100 языков.
Git-программирование астросистем https://gitverse.ru/astrogeoscenter

Оффлайн Ph_user

  • *****
  • Сообщений: 2 820
  • Благодарностей: 74
    • Сообщения от Ph_user
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #696 : Вчера в 09:41:11 »
Функция сама выделяет маллоком под него память и заполняет его. И далее возвращает управление в МАЙН. Главное не забыть его освободить, когда он уже не нужен.

Устраивать освобождение чужой выделеной памяти это резко повышеная вероятность косяков уже достаточно скоро. Как учит великий и ужасный винапи если кому что надо - тот и должен выделять память и передавать указатель и размер выделения.

Да и в мейне никто кроме бога виндуса не_знает сколько было выделено - потому и там тоже вероятность кучи косяков от простых до более сложных типа поломания куска страницы памяти без апаратной защиты перезаписью за границы выделения и до отлова апаратной защитой страниц все больше и больше.

100байт подлежащие програмы могут выделить и в стеке для ускорения. И перезапись кусков стека может очень быстро довести до проблем.
« Последнее редактирование: Вчера в 09:50:07 от Ph_user »

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

  • *****
  • Сообщений: 1 048
  • Благодарностей: 33
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #697 : Вчера в 18:17:25 »
Как учит великий и ужасный винапи если кому что надо - тот и должен выделять память и передавать указатель и размер выделения.
Это всё в руках паскалиста или дельфиста. Раньше, в 90х и нулевых было довольно много дельфинисток, красиво звучит. Теперь астрономы-программеры стали сишниками, шарпистами и питонщиками. Языковая направленность программисток девушек звучит смешно. Питонщица - это круто!
Git-программирование астросистем https://gitverse.ru/astrogeoscenter

Оффлайн Ph_user

  • *****
  • Сообщений: 2 820
  • Благодарностей: 74
    • Сообщения от Ph_user
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #698 : Вчера в 19:22:55 »
Вполне много полезных програм можно делать уже на скрипте. Раньше звали джаваскрипт - потом скрипт. И отладчик встроен в броузеры уже почти все на хроме и исполняем там же. На компилируемом больше смысла делать когда нужна особо эпичная производительность на симде.

А на позапрошлой неделе наоборот "переносили программы с С++ на Go

Как там с интринсиксами для более удобного програмирования симд блоков купленого в магазине себе в хозяйство процесора ?

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

Асемблер скорее. Купленый в магазине процесор работает в своей системе инструкций и такую програму из инструкций удобно составлять и отлаживать в асемблере. Чтобы в голове у програмиста после обучения была годно рабочая модель счетно-решающей машины и как она работает чтобы под нее делать более разумные програмы и отлаживать програмы.
 Потом будет уже понятнее что делают си и паскаль при компиляции в исполняемую програму для процесора. Ошибки при исполнении в отладчике показывает и в системе инструкций процесора. Чтобы понять че там мало понятно компилятору от замысла програмиста.

Ну и если компилятор криво компилит задумку в инструкции процесору - чтобы составить багрепорт разработчикам компилятора надо знать и понимать как должно быть на выходе компилятора.
« Последнее редактирование: Вчера в 19:47:47 от Ph_user »