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

    Встретился с простейшими проблемами, в VB не приходилось с ними сталкиваться. :wall:

    Начну с первого, дальше буду продолжать.

    Задача такова:
    нужно одно число разделить на другое

    Пытался я это в лазарусе сделать

    ExpandedWrap disabled
      unit deng;
       
      {$mode objfpc}{$H+}
       
      interface
       
      uses
        Classes,  SysUtils,  LResources,  Forms,  Controls,  Graphics,  Dialogs,  StdCtrls,  Buttons,  Menus, ActnList;
      . . . . . . . . .
      var
        MForm: TMForm;
        inf: Text;
        outf: Text;
        u, v, w : string;//ansistring;
        p, m: string;
        code1, code2: integer;
        uu, vv, ww: integer;
        pp, mm : integer;
        vr: integer;
      implementation
       
      { TMForm }
      . . . . . . . . .
      procedure TMForm.Button3Click(Sender: TObject);
      begin
          u := Edit1.text;
          w := Edit3.text;
          Val(u, uu, code1 );
          Val(w, ww, code2 );
          vv := uu / ww;
          Str(vv, v);
          Edit2.text := v;
      end;
      . . . . . . . . .
      initialization
        {$I deng.lrs}
      end.


    Происходит ошибка.
    Мотивипует он это так:

    deng.pas(111,14) Hint: use DIV instead to get an integer result
    deng.pas(111,18) Hint: Type size mismatch, possible loss of data / range check error
    deng.pas(111,14) Error: Incompatible types: got "Extended" expected "LongInt"
    deng.pas(189) Fatal: There were 1 errors compiling module, stopping

    DIV - не подходит, т. к. необходимо расчитать с сотыми (до сотых)

    Добавлено
    Цитата simsergey @
    Мотивипует

    Я имел ввиду мативирует
      В результате деления получается дробное число. Используй переменную приемник вещественного типа: real, double, extended...
      и не забывай про деление на 0.
      Сообщение отредактировано: e-moe -
        Програмка простенькая (пока ее пишу для себя)

        Сказать пользователю программы вот это нельзя

        Баланс: 200 рублей
        Кол-во дней: 30 дней
        В день: 6.666666666666667E+000 рублей

        Надо хотяб округлить до копеек... Например: 6.67 рублей
        :no:
          Говорили же — Паскаль сначала изучите ;)
          Str(X:Width:Decimals; var S:String)
            Цитата ZenIA @
            Str(X:Width:Decimals; var S:String)

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


              Добавлено
              намек ясен?
                Значит, так...
                Цитата e-moe @
                намек ясен?

                Ясен... 8-) Не нашел я этого в учебниках.
                Цитата ZenIA @
                Str(X:Width:Decimals; var S:String)

                Я догадался, о чем речь...
                В моем случаи это наверно выглядит так
                ExpandedWrap disabled
                      u := Edit1.text;
                      w := Edit3.text;
                      Val(u, uu, code1 );
                      Val(w, ww, code2 );
                      vv := uu / ww;
                      Str(vv:1:2, v);
                      Edit2.text := v;

                Переменные vv, uu, ww - double.
                Да, так все работает нормально...
                Сообщение отредактировано: simsergey -
                  Цитата simsergey @
                  Не нашел я этого в учебниках.

                  Значит, читай другие учебники + Руководство по языку
                    Цитата volvo877 @
                    Значит, читай другие учебники + Руководство по языку

                    Спасибо, гляну :)

                    А как выполнить действие при выходе из проги?

                    Добавлено
                    Цитата volvo877 @
                    Чтобы получить ответ, нужно задать правильный вопрос. Но чтобы правильно задать вопрос, нужно знать большую часть ответа...

                    Но если знаешь ответ, зачем задавать вопросс? :)
                      ???
                      Аварийно процедурой Halt, а корректно путем завершения главной процедуры (код между устанвками begin и end. — она в тексте стоит последняя) или выхода из нее командой Exit.

                      Перед этим при необходимости освободить динамическую память, контексты дисплея, уничтожить объекты Виндовс, прервать сеанс связи и т.д.

                      u := Edit1.text;
                      w := Edit3.text;
                      Val(u, uu, code1 );
                      Val(w, ww, code2 );
                      vv := uu / ww;
                      Str(vv:1:2, v);
                      Edit2.text := v;

                      А для рубликов циферок не маловато ли???

                      Ps. А хелпов у Вас что нету?
                      Сообщение отредактировано: ZenIA -
                        Цитата ZenIA @
                        А для рубликов циферок не маловато ли???

                        На самом деле я про гривни...

                        Цитата ZenIA @
                        у Вас

                        Пожалуйста, давайте перейдем на ТЫ, а то мне не по себе как-то...

                        Добавлено
                        Цитата ZenIA @
                        Аварийно процедурой Halt, а корректно путем завершения главной процедуры (код между устанвками begin и end. — она в тексте стоит последняя) или выхода из нее командой Exit.

                        При нажатии на красный крестик (справо вверху) необходим выполнить пару действи, перед закрытием программы
                          Лазарусом не пользуюсь, но по аналогии с Дельфи должно быть нечто вроде OnCloseQuery формы?
                            Или, на пример, если не поддерживаются события, перехватив сообщение wm_close главного окна
                            ExpandedWrap disabled
                              type
                                TForm1 = class(TForm)
                                procedure wmClose(var I);message wm_close;{Обработчик сообщения wm_close}
                                end;
                               
                               
                                procedure TForm1.wmClose(var I);
                                begin
                              {Щас чего-то натворю !!!!!}
                                MessageBox(Handle,'Программа закрывается!','До свидания',0);
                                Close;
                                end;
                                
                              end.


                            Завершение программы зависит от объектной и операционной систем…
                            Ну поскольку, похоже, работаете с объектной системой Дельфи под Винду (говорил же, берите сразу Дельфу) — значит надо разрывать главный цикл программы ОДНИМ ИЗ ПРИВЕДЕННЫХ СПОСОБОВ:
                            1. Закрыть приложение Application.Terminate;
                            2. Разрушить главное окно DestroyWindow(Handle) или Close
                            3. Послать всем окнам сообщение wm_close путем вызова PostQuitMessage(0)

                            или, что менее принято, закрыв процесс функциями ExitProcess или TerminateProcess.

                            Цитата
                            Пожалуйста, давайте перейдем на ТЫ, а то мне не по себе как-то...

                            Обращайтесь ко мне как хотите, а у меня вежливая форма обращения — это профессиональная привычка.
                            Сообщение отредактировано: ZenIA -
                              Ладно, будем подумать...

                              Добавлено
                              Цитата ZenIA @
                              MessageBox(Handle,'Программа закрывается!','До свидания',0);

                              А как MessageBox будет в лазарусе...
                                Наверное, пока вопрос закрыт.
                                Буду искать другой компилятор и учить другой язык.
                                Спасибо за ВАШИ ответы... :(

                                Добавлено
                                Цитата ZenIA @
                                говорил же, берите сразу Дельфу

                                Надо будет поискать! 8-)
                                  Цитата simsergey @
                                  Ладно, будем подумать...

                                  Добавлено
                                  Цитата ZenIA @
                                  MessageBox(Handle,'Программа закрывается!','До свидания',0);

                                  А как MessageBox будет в лазарусе...

                                  Как и на Васе, MessageBox это функция WinAPI (есть какой-то аналог и в библиотеках, но он никаких новых возможностей не дает и ее, обычно не используют).

                                  Delphi — диалект Паскаля (поддерживает синтаксис и обладает дополнительніми возможностями) и ее использование не освобождает от знания этого языка. Кстати она объемная по размеры и, наверно, придется покупать ее на диске.
                                  Кроме того у бесплатных кроссплатформенных компиляторов тоже есть свои преимущества ;)
                                  Сообщение отредактировано: ZenIA -
                                    Цитата ZenIA @
                                    Кстати она объемная по размеры и, наверно, придется покупать ее на диске.

                                    Значит буду искать на дисках. А может быть перейду на другой язык.
                                      Цитата simsergey @
                                      А может быть перейду на другой язык.

                                      Лучше всего с таким вот настроем и с подобным стилем обучения перейти на другую специальность... Любой язык требует изучения, и при использовании любого языка никто не отменяет необходимости думать. Я не знаю, что ты
                                      Цитата simsergey @
                                      раньеш писал на VB
                                      , но если действительно что-то писал, то должен знать о наличии контекстной помощи или в крайнем случае - подробного описания языка/библиотек (заметь, с примерами), которыми ты за все время не соизволил воспользоваться ни разу (ибо если бы пользовался, то вопрос о MessageBox не возник бы, так же как и вопрос о примере использования Str)...

                                      Цитата simsergey @
                                      Но если знаешь ответ, зачем задавать вопросс?

                                      Тебе бы не помешало немного внимательности:
                                      Цитата
                                      Но чтобы правильно задать вопрос, нужно знать большую часть ответа...
                                      "Знать большую часть" - еще не значит "знать все", не так ли?
                                        Цитата volvo877 @
                                        "Знать большую часть" - еще не значит "знать все", не так ли?

                                        Да, тут ты прав! 8-)
                                        Цитата volvo877 @
                                        Лучше всего с таким вот настроем и с подобным стилем обучения перейти на другую специальность... Любой язык требует изучения, и при использовании любого языка никто не отменяет необходимости думать.

                                        Если нет стабильно работающего компилятора, то хоть знай язык, хоть незнай его, всеравно ничего не напишиш.
                                        Цитата volvo877 @
                                        Я не знаю, что ты раньеш писал на VB

                                        Лучше задай вопрос "Почему VB?".

                                        Я начинал с турбопаскаля, но имея 16-ти битный компилятор, небыло жилания что-то писать (если понадобится и виндовскую форму не применишь).
                                        Под рукой лежал VB, с красивым описанием. Вот и начал изучать его. Потом понял, что он не профессиональный язык, да и на других платформах на нем ничего не напишиш.

                                        Увидив FPC, для всех платформ, конечно радость в душе появилась. :rolleyes:
                                        Дальше посоветовали Лазарус для создания виндовских форм и объектов на них. Да, штука интересная...
                                        Но работает не совсем стабильно... Остается только Делфи. И учебники для него есть.

                                        Цитата volvo877 @
                                        Лучше всего с таким вот настроем

                                        Своим сообщение ты мне надежду небольшую вселил.

                                        И всетаки, мне не так необходимо использовать виндовские окна, ну там по-мелочи (лейблы, кнопки, эдиты ...).
                                        Былоб очень хороше, еслиб можно было эти окна писать на FPC.
                                        А есть просто генераторы кода для него, с визуальным созданием формы?

                                        Добавлено
                                        P. S. В FPC примеры я смотрел, примеры не такие уже и простые :unsure: и примера создания эдитов, лейблов, кнопок - нет.
                                          Цитата simsergey @
                                          Увидив FPC, для всех платформ, конечно радость в душе появилась. :rolleyes:
                                          Дальше посоветовали Лазарус для создания виндовских форм и объектов на них. Да, штука интересная...
                                          Но работает не совсем стабильно... Остается только Делфи. И учебники для него есть.

                                          да ну? в чем же заключается эта нестабильность(или ты скачал версию с девелоперской ветки)? :huh:
                                            Цитата e-moe @
                                            с девелоперской ветки

                                            Это что такое?
                                              Цитата simsergey @
                                              Цитата (e-moe @ Вчера, 18:33)
                                              Цитата
                                              с девелоперской ветки

                                              Это что такое?

                                              Это версия, которая в данный момент находится в разработке. Т.е. следующая версия программы - это она, но доделанная до конца.
                                                у меня 0.9.22 бета
                                                  Цитата simsergey @
                                                  0.9.22 бета

                                                  Последняя стабильная. Так что же у тебя там не работало?
                                                    Визникают такие проблемы:

                                                    1. После открытия проекта, первый написанный оператор или процедура, или функция вызывает ошибку (мол, незнаю я такого оператора).

                                                    2. Частенько после компиляции он пишет, что компилятор неисправен, и сохраните данные, закройте программу и надейтесь на лучшее (это он такое сообщение выбрасывает).

                                                    Дальше возникали тоже некоторые проблемы, как вспомню допишу.

                                                    Добавлено
                                                    Цитата simsergey @
                                                    Былоб очень хороше, еслиб можно было эти окна писать на FPC.
                                                    А есть просто генераторы кода для него, с визуальным созданием формы?

                                                    Знает ли кто-нить ответ на этот вопрос?
                                                      Цитата simsergey @
                                                      А есть просто генераторы кода для него, с визуальным созданием формы?

                                                      если знаешь WinAPI то вот: VISG: visual and smart GUI builder.

                                                      1я твоя проблему у меня ни разу не встречалась, ну а 2я сильно зависит от того кода, что ты пытался компилировать...
                                                        Цитата e-moe @
                                                        VISG: visual and smart GUI builder.

                                                        Спасибо, изучу продукт...
                                                          Подскажите, а как в делфи убрать пробелы в строке с начала и с канца.
                                                            Так же, как и в FPC:
                                                            ExpandedWrap disabled
                                                              uses SysUtils;
                                                              ...
                                                                s := Trim(s);
                                                              и еще, а как сделать текст вместе со смайлами?
                                                                Цитата simsergey @
                                                                а как сделать текст вместе со смайлами?

                                                                А вот это уже спрашивай в разделе Delphi: Общие вопросы.
                                                                  Спасибо! :)
                                                                    Вроде пока разобрался, спасибо всеем :D

                                                                    Сообщения были разделены в тему "Работа с таймером"
                                                                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                                                    0 пользователей:


                                                                    Рейтинг@Mail.ru
                                                                    [ Script execution time: 0,0848 ]   [ 15 queries used ]   [ Generated: 21.11.25, 09:45 GMT ]