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

    ExpandedWrap disabled
      Function Pristavka(q : Real) : string;
      Var znak : string;
      begin
       
      ....
       
      if (q>=1000000000) and (1000000000000) then if (q>=1000000000) and (q<10000000000) then begin
                                                                                              Str((q/1000000000):3:2,znak);
                                                                                              Pristavka:=znak+TextRus(' ѓЋ¬');
                                                                                              end
                                             else if (q>=10000000000) and (q<100000000000) then begin
                                                                                                Str((q/1000000000):4:2,znak);
                                                                                                Pristavka:=znak+TextRus(' ѓЋ¬');
                                                                                                end
                                             else if (q>=100000000000) and (q<1000000000000) then begin
                                                                                                  Str((q/1000000000):5:2,znak);
                                                                                                  Pristavka:=znak+TextRus(' ѓЋ¬');
                                                                                                  end;
      end;


    Место ошибки указано на месте открывающейся скобки после if. В чем причина? Откуда взялся тип Boolean?

    Компилятор FPC 2.2.2
    Сообщение отредактировано: Polinom2686 -
      Цитата Polinom2686 @
      ExpandedWrap disabled
        if (q>=1000000000) and (1000000000000)
      Что должно означать это условие? В первой скобке - Boolean (после сравнения - либо True, либо False), а во второй что? Компилятор прав, If не может работать с другими типами, только Boolean...
        volvo877, ты меня спас. Это моя невнимательность. :wall:

        Вот так должно выглядеть.

        ExpandedWrap disabled
          if (q>=1000000000) and (q<1000000000000)



        СПАСИБО !!! Разумеется теперь все работает.
        Сообщение отредактировано: Polinom2686 -
          Polinom2686, а ты в ноликах не путаешься? Я бы, пока не поздно, написал бы по-другому:

          ExpandedWrap disabled
            Function Pristavka(q : Real) : string;
            const
              Mlrd = 1000000000;
            Var
              znak : string;
            begin
               if (q>=Mlrd) and (q < 1000 * Mlrd) then
               begin
                  Str((q/Mlrd):3:2,znak);
             
                  if (q>=Mlrd) and (q<10*Mlrd) then
                  begin
                     Pristavka:=znak+TextRus(' кракозябры№1 ');
                  end
                  else
                     if (q>=10*Mlrd) and (q<100*Mlrd) then
                     begin
                        Pristavka:=znak+TextRus(' кракозябры№2 ');
                     end
                     else
                        if (q>=100*Mlrd) and (q<1000*Mlrd) then
                        begin
                           Pristavka:=znak+TextRus(' кракозябры№3 ');
                        end;
               end;
            end;
          Проще разобраться, где какое число, не правда ли? :)
            Нет, не путаюсь. Спасибо за идею, но мне кажется в данном случае она мне не пригодится. Работоспособность и правильность работы функции уже проверена, а изменять эту функцию мне не нужно.
            Плюс, выполнять лишние действия (умножение внутри скобок) мне ни к чему, эта функция будет довольно часто использоваться. А так, еще раз спасибо.
              Цитата Polinom2686 @
              Плюс, выполнять лишние действия (умножение внутри скобок) мне ни к чему, эта функция будет довольно часто использоваться.
              Умножение выполнится еще на этапе компиляции, ты за кого вообще FPC держишь? Mlrd описан как Const все-таки...
                Цитата volvo877 @
                Цитата (Polinom2686 @ Сегодня, 12:35)
                Плюс, выполнять лишние действия (умножение внутри скобок) мне ни к чему, эта функция будет довольно часто использоваться.
                Умножение выполнится еще на этапе компиляции, ты за кого вообще FPC держишь? Mlrd описан как Const все-таки...


                Я же любитель, а не профессионал. :)
                Много чего могу и не знать. ;)

                Добавлено
                Не серчай на меня. (Don't worry, be happy :whistle: )
                  Цитата Polinom2686 @
                  Нет, не путаюсь. Спасибо за идею, но мне кажется в данном случае она мне не пригодится. Работоспособность и правильность работы функции уже проверена, а изменять эту функцию мне не нужно.

                  а представь, что кто-то потом будет читать твой код(только не говори, что этот код никто кроме тебя читать не будет, даже если и так, то нужно приучивать красиво писать код)? у меня, например, в глазах рябит от этих нулей. Вообще все это дело называется "магические числа"
                    Цитата miksayer @
                    Цитата (Polinom2686 @ Вчера, 12:35)
                    Нет, не путаюсь. Спасибо за идею, но мне кажется в данном случае она мне не пригодится. Работоспособность и правильность работы функции уже проверена, а изменять эту функцию мне не нужно.

                    а представь, что кто-то потом будет читать твой код(только не говори, что этот код никто кроме тебя читать не будет, даже если и так, то нужно приучивать красиво писать код)? у меня, например, в глазах рябит от этих нулей. Вообще все это дело называется "магические числа"



                    Вот как раз этот код никто кроме меня читать не будет :). Тот для кого программа предназначена, программированием не интересуется. Эта программа из разряда "сделать и забыть". ;)
                    Цитата miksayer @
                    у меня, например, в глазах рябит от этих нулей.

                    Это уже ваши проблемы, я нули нормально воспринимаю, не даром на инженера связиста учусь :).

                    Добавлено
                    Причем здесь вообще магические числа?
                      Цитата Polinom2686 @
                      не даром на инженера связиста учусь
                      Но остальные же не учатся на связистов, что, они должны ломать глаза? Ладно было бы как в некоторых языках: 10_000_000_000 - никаких проблем с восприятием. Но просто нули, подряд... :wacko:

                      Цитата Polinom2686 @
                      Эта программа из разряда "сделать и забыть"
                      <_< В следующий раз предупреждай, что тебе "просто заставить программу работать, а там - хоть трава не расти", я к таким программам (и "программистам" тоже) отношусь по-другому, для них есть специальный раздел.
                        Я очень рад, что я не "программист". :)
                        Сообщение отредактировано: Polinom2686 -
                          Цитата volvo877 @
                          Но остальные же не учатся на связистов, что, они должны ломать глаза? Ладно было бы как в некоторых языках: 10_000_000_000 - никаких проблем с восприятием. Но просто нули, подряд... :wacko:


                          Я просто привык нули считать, поэтому у меня вопросов такие записи не вызывают.

                          Цитата volvo877 @
                          Цитата (Polinom2686 @ Сегодня, 09:33)
                          Эта программа из разряда "сделать и забыть"
                          <_< В следующий раз предупреждай, что тебе "просто заставить программу работать, а там - хоть трава не расти", я к таким программам (и "программистам" тоже) отношусь по-другому, для них есть специальный раздел.


                          Что за раздел?
                          А "сделать и забыть" из-за того что программа нужна в одном экземпляре (в крайнем случае не более 3-х).
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


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