На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
В этом разделе можно создавать темы, которые относятся к поколению 32-битных компиляторов.
Здесь решаются вопросы портирования кода из старого доброго Турбо Паскаля в FPC, TMT, VP, GPC компиляторы, а также особенностей программирования на них для Windows/Linux и других ОС.
Указывайте тип компилятора, его версию, а также платформу (Windows/Linux/..) компиляции, другими словами, Target.
Модераторы: volvo877
Страницы: (3) 1 [2] 3  все  ( Перейти к последнему сообщению )  
> Переносим код из Турбо Паскаля
    Переносим код из Турбо Паскаля


    Давайте здесь будем помогать людям переносить свои программы из Турбо Паскаля (графику, Turbo Vision). Если у кого есть проблемы с портированием, опишите подробно проблему.
    Важно: не забудьте также указать тип компилятора и его версию.
    Большие куски текста не вставлять! Можно показать лишь часть кода. А если этого недостаточно, то присоедините архив к сообщению.

    Добавлено
    Советы:
    Чтобы программы переносились легко, надо
    • Писать их на чистом Паскале, и не смешивать их со встроенным ассемблером. Плохой пример - графика в режиме 13h с применением ассемблерных процедур
    • Применять структурное программирование: чётко разбить всё по процедурам и на модули. Желательно, всё же, использовать стандартные.
    • Не обращаться напрямую к памяти и портам.
      Цитата
      Чтобы миновать консольное окно, нужно указать вначале программы (перед Uses)

      я делаю так :
      ExpandedWrap disabled
        {$MODE OBJFPC}
        {$APPTYPE GUI}

      результат аналогичный.

      Это сообщение было перенесено сюда или объединено из темы "Особенности программирования в TMT/FPC"
        Цитата Oleg_Z, 13.11.04, 20:29
        результат аналогичный.
        Результат аналогичный, т.к. тоже указана директива GUI

        Это сообщение было перенесено сюда или объединено из темы "Особенности программирования в TMT/FPC"
          А что делать, если в программе используется Turbo Vision?

          Из всех 32-битных компиляторов я знаю только один, который поддерживает Turbo Vision - это Virtual Pascal
            Цитата Arsuit @
            Из всех 32-битных компиляторов я знаю только один, который поддерживает Turbo Vision - это Virtual Pascal
            :no:
            Также есть и в ТМТ. Во Free Pascal есть FVision - аналог Турбо Вижн.
              Цитата Romtek @
              Также есть и в ТМТ

              ЧТО?!

              Romtek, ты хочешь сказать что в ТМТ есть модуль App? Или как он там называется? Ни разу не видел!
                В TP7 часто использовал у строки нулевой элемент для определения длинны.
                ExpandedWrap disabled
                  var
                   s:string;
                  begin
                   writeln(ORD(s[o])) {вывести текущую длинну строки s}
                  end.

                В FPC этот трюк не проходит.
                Приходится использовать length.
                оффтоп
                Вот говорила мне мама не использовать нестандарных приемов :)
                  FPC 1.0.10
                  Обнаружил:
                  при использовании класса Thread (fcl), необходимо следить за возможными ошибками.
                  Так если два паралельных процесса что-то выводят на консоль, может получиться, что когда один процесс будет что-то выводить, консоль будет занята, и произойдет ошибка.

                  Это сообщение было перенесено сюда или объединено из темы "Особенности программирования в TMT/FPC"
                  Сообщение отредактировано: Oleg_Z -
                    Oleg_Z, указывай версию компилятора тоже. Кроме того, не всем ясно, что речь идёт именно о компиляторе FPC.

                    Это сообщение было перенесено сюда или объединено из темы "Особенности программирования в TMT/FPC"
                      Цитата Arsuit @
                      ты хочешь сказать что в ТМТ есть модуль App? Или как он там называется? Ни разу не видел!
                      :yes:
                      А то, что ты его ни разу не видел, не говорит о том, что он не существует.
                        Я переношу программу из BP 7.0 с Turbo Vision
                        У меня есть Virtual Pascal 2.1.279 с Turbo Vision.
                        Все идет нормально пока непопадается модуль owindows из BP
                        Где взять этот модуль и(или) как(на что) его можно заменить?
                          Кстати, с Борланд Паскаль была та же фигня.
                          Вроде, первая буква в слове owindows означает Object - пробуй убрать букву о. Её позже убрали.
                          Кстати, под какую платформу компилируешь?
                            Компилирую под win32

                            C:\VP21\BIN.W32\AL.PAS(219): Error 150: Method identifier expected
                            Tdialog.WMCommand(Msg);
                            .........^
                            Error: return code = 150.
                              Возможно, в объекте Tdialog не определён метод WMCommand. Хотя должен, по идее.
                              Покажи текст кода (прикрепи к сообщению).
                                вот тут клок из начала
                                ExpandedWrap disabled
                                   PDialogDir = ^TDialogDir;
                                   TDialogDir = Object(TDialog)
                                    List_dir,List_disc:PListBox;
                                    Constructor Init(AParent: Trect);
                                     Function CanClose: Boolean; Virtual;
                                     Procedure SetupWindow; Virtual;
                                     procedure WMInitDialog(var Msg: TMessage); virtual wm_First + wm_InitDialog;
                                     procedure WMCOMMAND(var Msg: TMessage); virtual WM_COMMAND;
                                   
                                     Procedure WM_CTLCOLOR(var Msg: TMessage); virtual WM_CTLColor;
                                    end;


                                А вот сама процедура
                                ExpandedWrap disabled
                                  procedure TDialogdir.WMcommand(var Msg: TMessage);
                                  var
                                    DirInfo: TSearchRec;
                                    v:word;
                                    s:string[4];
                                  begin
                                   Tdialog.WMCommand(Msg);
                                   {вот тут ругается}
                                   case Msg.LParamHi of
                                  и т.д.
                                  Насколько я понимаю, это не Турбо Вижн, а ObjectsWindows (OWL) - это разные вещи.
                                  Виртуальный Паскаль поддерживает OWL?
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:
                                  Страницы: (3) 1 [2] 3  все


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0501 ]   [ 19 queries used ]   [ Generated: 19.03.24, 09:38 GMT ]