FreePascal

High-level languages programming questions
  • bw, не могу разобраться, как получить .pp-файл. Подскажи, где искать?
  • Что значит получить? Берешь любимый текстовый редактор и пишеш Pascal или ObjectPascal код. Если тебе больше нравится можешь создавать .pas, .foo, .bar, .mysourcecode и т.д. Это просто расширение файла с исходными кодами, которое принято в сообществе FreePascal.

    ..bw
  • bw, скомпилировал слудующую программу заполнения массива:
    Const n=24;
    Type MyArray = Array [1..n] Of Integer;
    Var i: Integer; a: MyArray;
    Procedure fill;
    Begin
    For i:=1 To n Do
    Begin
    a:=Random(24);
    WriteLn (i,'. ',a);
    End; End;
    Begin
    fill;
    ReadLn;
    End.

    При исполнении в Колибри получается какая-то ерунда - постоянно одни и те же значения, причем 6 вместо 24.
  • А что делает fill?
    Проблема в рандоме. Особенность ли это колибри или сего паскаля мне не ясно. А там есть что-то типа randomize timer?
    С Уважением, Альберт Перельман
  • там есть просто randomize, и чел этого не делает! last_day, ты забыл randomize!
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • last_day, у меня проблем не возникло. Код отработал как под линухом, так и в колибри. Вышли мне получившийся kex.

    p.s. Предлагаю прекратить флуд. last_day, ReadLn не реализована, о чем мы с тобой уже говорили. Randomize реализован, но на svn этого кода еще нет. Сейчас я выложу на местный ftp бинарные модули RTL, попробуй использовать их, а не собирать из исходников svn.

    ..bw
  • > У меня проблем не возникло
    > Randomize реализован, но на svn этого кода еще нет.

    Ппц. А в чём тогда спор, last_day ставь апдейты и всё будет ok
    С Уважением, Альберт Перельман
  • Я вижу проблему только в этом: > На местном SVN (http://www.kolibrios.org/repos/programs/develop/fp/) лежит исходники RTL для KOS, утиль и примеры, но я сейчас несколько забросил обновление этого репозитория так как грядет некоторая реструктуризация каталогов, а так же механизна сборки RTL и примеров.
    Возможно код с svn, которым пользовался last_day, был кривой, но на сколько я помню random был реализован в первые дни, так как там реализовывать особенно нечего, а вот randomize я сделал только вчера-сегодня. Вобщем то я и вопрос не до конца понял. Одни и теже значения в одном цикле или при каждом перезапуске программы, если второе, то нужно вызывать Randomize при запуске приложения, если первое, то это непонятный мне косяк, смотри первый пост.

    ..bw
  • Привет!

    Собираюсь качать Фри Паскаль для доса, он сойдет? Для виндоса много весит.
    http://www.freepascal.org/down/i386/go32v2-russia.var
    Вот эти собираюсь:

    You can download the contents of the above zip files as separate files:

    1. Mandatory files:
    * Install program: install.exe (352 kB)
    * ...and its data file install.dat (24 kB)
    * Base files (program and units): basedos.zip (4 MB)
    * GNU as and ld: aslddos.zip (1 MB)

    # Optional files:

    * Free Vision units: ufvdos.zip (558 kB)
    * GDB interface units: ugdbdos.zip (35 kB)
    * Regular expressions unit: uregdos.zip (28 kB)
    * IDE: idedos.zip (1.5 MB)
    * GNU debugger, gdb: gdbdos.zip (901 kB)
    * Unit Graph: ugrphdos.zip (126 kB)
    * Hash units: uhashdos.zip (40 kB)
    * Free Component Library (FCL)-base units: ufclbdos.zip (450 kB)
    * Free Component Library (FCL)-datasets units: ufclddos.zip (559 kB)
    * Free Component Library (FCL)-FPCUnit units: ufcludos.zip (208 kB)
    * Free Component Library (FCL)-images units: ufclidos.zip (460 kB)
    * Free Component Library (FCL)-network units: ufclndos.zip (8 kB)
    * Free Component Library (FCL)-Pascal source processing units: ufclsdos.zip (189 kB)
    * Free Component Library (FCL)-registry units: ufclrdos.zip (58 kB)
    * Free Component Library (FCL)-process management units: ufclpdos.zip (23 kB)
    * GD library interface units: ulgddos.zip (17 kB)
    * Symbolic (unit for parsing and evaluating expressions): usymbdos.zip (62 kB)

    И того: 14 700 Кб

    Подскажите пожалуйста которые можно убрать?

    Или где скачать Про Паскаль? И ее Юниты?
  • 1. Нужен сам компилятор (35Mb).
    2. Нужны исходники RTL и прочие (22Mb).
    3. Нужен мой код (сущие копейки).

    Так как с недавних пор у меня безлимит, я попробую (постараюсь за неделю уложиться) скомпоновать всё что требуется в несколько архивов (компилятор + сорцы) и выложить на местном FTP. Вообще я давненько не занимался KOS и FPC для неё, нехорошо. Подождите.
    Если вас вообще интересует Pascal, я всё же рекомендую скачать полную версию для винды (или линуха, как в моём случае) и поупражняться в оной среде (прежде чем программить под KOS). Полный набор исходников - это отдельный интерес, он не увсех возникает.

    Про ProPascal мне ничего не известно. Вроде здесь неподалёку была про него тема. Под Linux версии нет, а такой вариант меня не устраивает.

    ..bw
  • FreePascal - это, конечно, хорошо.
    Я, если очень мягко сказать, новичок в KolibriOS (хотя идея мне нравится, в качестве начала подойдёт), да и не ассемблерщик (увы, ассемблером для x86 я могу слегка пользоваться лишь строго по инструкции, хотя у меня и был небольшой опыт работы/баловства с мнемокодом системы команд 8080/КР580), но в среде FreePascal (и под linux, и под win32, и под win64) и особенно Lazarus я уже не новичок (хотя, к сожалению, большая часть моих задумок там переписывалась с нуля).
    Без проблем адаптировал Ваш RTL под текущую svn-версию fpc, собрал примеры.
    Теперь идея пойти дальше: адаптировать классы GUI, в частности, есть такой проект fpgui. Сам по себе он уже обеспечивает VCL-подобные классы ("кнопочки" он отрисовывает сам!), кроме того, его интерфейс есть в IDE Lazarus. Да, конечно, за счёт модуля classes получится нечто монстроподобное, но, возможно, есть смысл урезать этот модуль.
    Начал первые попытки по созданию kos-интерфейса. Возникли вопросы:
    1. Как я понял из описания API, в kolibrios действует идеология "одно окно - одно приложение". В принципе, идея уменьшения количества окон весьма интересна, но неужели всё так плохо? Т.е., либо следует забыть о многооконных программах (вроде того же fpgui designer), либо придумывать "хаки" с "липовыми" приложениями, создающими вспомогательные окна (в принципе, это возможно и даже не так сложно сделать через IPC, над этим можно подумать, но как это загрузит систему?), либо создавать что-то по типу MDI (окна в окне)...
    2. Не нашёл функции отслеживания местоположения и размера окна. Вероятно, все перемещения и изменения размера должно отслеживать приложение?
    Извините, если написал глупость или не нашёл очевидного - знаком с kos меньше недели.
  • Извините за п.2 - он решается функцией 9
  • daesher
    п.1 Смотря что рассматривать под приложением. На самом деле один поток может иметь одно окно, но в одном адресном пространстве может размещаться несколько потоков: Функция 51 - создать поток. Причем каждый из этих потоков воспринимается системой как самостоятельное приложение, но поскольку они имеют одно общее адресное пространство, то могут легко между собой взаимодействовать. Но тут возникает ограничение вообще - 255 потоков (1 поток ядра есть всегда) и соответственно 255 окон максимум. На практике могут возникнуть не известные ранее проблемы, потому что никто раньше не делал такого. Например когда я писал zSea мне пришлось предусмотреть убивание дочерних (в логическом разумеется плане, потому что система не различает какой поток дочерний, а какой прародитель) в основном потоке, перед завершением основного. Иначе окна просто остаются висеть и их приходится убивать вручную. Итого имеем приложение zSea кроме основного имеющее еще 6 дочерних окон. Других примеров пока нету.
  • Mario wrote:daesher
    п.1 Смотря что рассматривать под приложением. На самом деле один поток может иметь одно окно, но в одном адресном пространстве может размещаться несколько потоков.
    Интересно, хотя и не совсем то. Впрочем, может, и логично создавать по потоку на окно: "кто-то" ведь должен обрабатывать события от окна. Но немного меняется идеология. 255 потоков - конечно, маловато (представьте себе Delphi-подобную IDE со всеми открытыми окнами, это потоков 10 может уйти, а плюс другие приложения, плюс системные... Пока укладываемся, но граница уже видна).
  • Who is online

    Users browsing this forum: No registered users and 2 guests