Компилирует без ошибок,но...

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Компилирует без ошибок,но...

Сообщение AlphaBlend » 19.06.2016 18:13:54

вы не описали саму процедуру
Аватара пользователя
AlphaBlend
постоялец
 
Сообщения: 207
Зарегистрирован: 22.05.2016 10:13:10

Re: Компилирует без ошибок,но...

Сообщение vvvch » 19.06.2016 18:24:11

AlphaBlend
Если Вы используете Windows, то можно делать так:
В uses добавляете модуль Windows, потом когда нужно вывести что-то в Log, то пишете в коде OutputDebugString(PChar('Вывод текста')); Текст это всегда строка, если надо вывести что-то другое, то используйте ф-ю format так OutputDebugString(PChar(Format('текст для вывода %d',[var]))); var - целая переменная (посмотрите описание ф-ии format, там много чего можно)
Теперь открываете окно "Журнал событий" (Вид\Окна отладки\Журнал событий).
В свойствах Окна (Правая кнопка мыши\ Параметры журнала событий) ставите галку "вывод" в "Сообщениях" далее "Ок". Всё. Сам этим пользуюсь уже давно, установка точек останова не всегда хорошо. Сначала ф-я OutputDebugString не выводила русские буквы, написал разработчикам Lazarus, исправили, сейчас нормально.
Аватара пользователя
vvvch
постоялец
 
Сообщения: 105
Зарегистрирован: 26.04.2013 11:05:39
Откуда: г.Боровичи, Новг. обл.

Re: Компилирует без ошибок,но...

Сообщение resident » 19.06.2016 18:38:29

vvvch
Благодарю, всё работает отлично :)

vvvch писал(а):установка точек останова не всегда хорошо

Да
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Компилирует без ошибок,но...

Сообщение vvvch » 19.06.2016 18:49:30

resident
Вообще-то я это не Вам писал, думаю Вы это и без меня знаете.
Просто несколько раньше AlphaBlend мне ответила что LNet поще Synapse, вот и решил "отплатить"...
Аватара пользователя
vvvch
постоялец
 
Сообщения: 105
Зарегистрирован: 26.04.2013 11:05:39
Откуда: г.Боровичи, Новг. обл.

Re: Компилирует без ошибок,но...

Сообщение AlphaBlend » 19.06.2016 18:51:18

в каком смысле "отплатить" ? :mrgreen: я не права ? По-моему Lnet проще ))

Добавлено спустя 36 секунд:
но за совет спасибо . Однако я использую Linux ) но теперь знать буду , все равно спасибо )
Аватара пользователя
AlphaBlend
постоялец
 
Сообщения: 207
Зарегистрирован: 22.05.2016 10:13:10

Re: Компилирует без ошибок,но...

Сообщение vvvch » 19.06.2016 18:55:56

А разве я что-то плохое посоветовал? Думаю Вы сами не понимаете какую мысль вы мне подали :D
Аватара пользователя
vvvch
постоялец
 
Сообщения: 105
Зарегистрирован: 26.04.2013 11:05:39
Откуда: г.Боровичи, Новг. обл.

Re: Компилирует без ошибок,но...

Сообщение AlphaBlend » 19.06.2016 18:57:16

:roll: наверное ... усталость дает о себе знать ) Невнимательность какая-то
Аватара пользователя
AlphaBlend
постоялец
 
Сообщения: 207
Зарегистрирован: 22.05.2016 10:13:10

Re: Компилирует без ошибок,но...

Сообщение Bombucho » 19.06.2016 18:59:20

vvvch писал(а):AlphaBlend
Если Вы используете Windows, то можно делать так:
В uses добавляете модуль Windows, потом когда нужно вывести что-то в Log, то пишете в коде OutputDebugString(PChar('Вывод текста')); Текст это всегда строка, если надо вывести что-то другое, то используйте ф-ю format так OutputDebugString(PChar(Format('текст для вывода %d',[var]))); var - целая переменная (посмотрите описание ф-ии format, там много чего можно)
Теперь открываете окно "Журнал событий" (ВидОкна отладкиЖурнал событий).
В свойствах Окна (Правая кнопка мыши Параметры журнала событий) ставите галку "вывод" в "Сообщениях" далее "Ок". Всё. Сам этим пользуюсь уже давно, установка точек останова не всегда хорошо. Сначала ф-я OutputDebugString не выводила русские буквы, написал разработчикам Lazarus, исправили, сейчас нормально.


Оу,спасибо большое)

Добавлено спустя 10 минут 44 секунды:
AlphaBlend писал(а):вы не описали саму процедуру


Не знаю правильно ли описал но получилось вот так
Код: Выделить всё
procedure TPyramid.SetApof(NewApof:Integer);
      begin
       if Apof >0 then Apof:=NewApof;
      end;                       


После этого комплириуется без критических ошибок(только 2 записи лишний "A не используется " и "TPyramide.Surface никогда не используется") я ввожу в поля сторону квадрата и апофему и мне выбивает окно с ошибкой которое ссылается на данную строку

Код: Выделить всё
     S:=SQRT(p * ( p - Apof) * (p - Apof) * (p - Side)); 
Bombucho
новенький
 
Сообщения: 37
Зарегистрирован: 18.06.2016 22:02:38

Re: Компилирует без ошибок,но...

Сообщение AlphaBlend » 19.06.2016 19:11:00

Bombucho разобрались Вы со своей задачей ? :roll:

Добавлено спустя 2 минуты 4 секунды:
не разобрались ... :(
Аватара пользователя
AlphaBlend
постоялец
 
Сообщения: 207
Зарегистрирован: 22.05.2016 10:13:10

Re: Компилирует без ошибок,но...

Сообщение Bombucho » 19.06.2016 19:24:52

AlphaBlend писал(а):Bombucho разобрались Вы со своей задачей ? :roll:

Добавлено спустя 2 минуты 4 секунды:
не разобрались ... :(


Пишет мол project1 вызвал класс исключений...сижу разбираюсь
Bombucho
новенький
 
Сообщения: 37
Зарегистрирован: 18.06.2016 22:02:38

Re: Компилирует без ошибок,но...

Сообщение resident » 19.06.2016 19:25:59

vvvch писал(а):Вообще-то я это не Вам писал, думаю Вы это и без меня знаете.
Просто несколько раньше AlphaBlend мне ответила что LNet поще Synapse, вот и решил "отплатить"...

Да? Забавно. И кому мне теперь вернуть?
Ведь ответили-то вы на мой вопрос, а не на её.
viewtopic.php?f=5&t=11178#p98641
viewtopic.php?t=11179&view=unread#unread
Последний раз редактировалось resident 19.06.2016 19:30:24, всего редактировалось 1 раз.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Компилирует без ошибок,но...

Сообщение vvvch » 19.06.2016 19:28:37

resident
Наверно "глюк", когда я отправил у меня была ошибка. Извините...
Аватара пользователя
vvvch
постоялец
 
Сообщения: 105
Зарегистрирован: 26.04.2013 11:05:39
Откуда: г.Боровичи, Новг. обл.

Re: Компилирует без ошибок,но...

Сообщение AlphaBlend » 19.06.2016 19:55:56

Bombucho
Я уже не знаю ... Издеваться над классами , Свойствами и методами можно долго :roll: Можно наворотить класс скрытыми методами , свойствами , виртуальными методами , раскрыть все проблемы "геометрической фигуры квадрат , прямоугольник" ... ( в начале исходного кода Вы натолкнетесь на порывы мои так и сделать ). Реализация класса "квадрат", который умеет возвращать все требуемые Вам значения . Пожалуйста , будьте внимательны и посмотрите , как написан код . Постарайтесь придерживаться тех же правил и не стесняйтесь обращаться к учебникам и гуглам :roll: Вам удачи , и спокойной бессонной студенческой ночи )
Код: Выделить всё
unit AlphaBlendRectangle;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils;

type

      { Введем  новый тип  TRectangle  }
      { Этот тип - запись, в которой  хранятся  стороны  четырехугольника ( НЕ Квадрата ! ) }

      TARect = packed record

        { признак  квадратности }

        {
             В  этом  месте  я  применила "динамическую запись" , которая  создает поля в  зависимости от условий .
             Тут это очень удобно и полезно , так  как  можно знать , с какой фигурой  работаешь
             и в последующем ориентироваться на поле SignRect ( " ПризнакКвадрата " )
        }
        case SignRect:boolean of
             true:
                  (
                      { у квадрата все  стороны  равны }
                      Side:Integer;
                  );
             false:
                  (
                      {  у  четырехугольника - не  равны }
                      SideA,
                      SideB,
                      SideC,
                      SideD:Integer;
                  );

            { Момент - в  данном  случае  я  не принимаю во внимание  прямоугольность фигуры . Положим , что
              фигура  прямоугольна. Мне думается, что Bombucho сам  додумает, как  сделать проверку  на
              прямоугольность
            }
      end;


   { TRadius }

   TRadius = (rdWithinCircle, rtOutsideCircle);

   { Базовый класс "Квадратик" }

   TARectangle = class

     public    { открытые  методы }

         function GetRadius(Radius:TRadius):Real;
         function GetArea:Real;
         function GetPerimetr:Real;
         constructor Create(VSide:Real);

     protected { защищенные методы }

         function XGetArea:Real;
         function XGetPerimetr:Real;
         function XGetORadius:Real;
         function XGetWRadius: Real;

      private { скрытые поля  }
         Side:real;
         Area    : Real;
         Perimetr: Real;
         Oradius : Real;
         WRadius : Real;
    end;

implementation

      function TArectangle.XGetWRadius:Real;
      begin
          result:=Wradius;
      end;

      function TArectangle.XGetArea:Real;
      begin
          result:=Area;
      end;

      function TArectangle.XGetPerimetr:Real;
      begin
          result:=Perimetr;
      end;
      function Tarectangle.XGetORadius:Real;
      begin
         result:=ORadius;
      end;

      { public }

      { получить радиус  вписанной  или описанной  окружности }

      function TArectangle.GetRadius(Radius: TRadius):Real;
        begin

           { rdWithinCircle, rtOutsideCircle }

            case Radius of
               rtOutsideCircle: result:=XGetOradius;
               rdWithinCircle : result:=XgetWRadius;
            end;
        end;

      { Получить площадь }
      function TArectangle.GetArea:Real;
      begin
          result:=XGetArea;
      end;

      { Получить периметр }
      function TArectangle.GetPerimetr:REal;
      begin
         result:=XGetPerimetr;
      end;

      constructor TArectangle.Create(VSide:Real);
      begin
        Side:=Vside;
        if Side > 0 then
        begin
             Area:= Side * Side;
             Perimetr:=Side * 4;
             Oradius:=SQRT(2 * (Side * Side)) / 2;
             Wradius:=Side / 2;
        end;
      end;

end.



Добавлено спустя 7 минут 57 секунд:
P.S. Если математика моя хромая , то извините :shock:
Аватара пользователя
AlphaBlend
постоялец
 
Сообщения: 207
Зарегистрирован: 22.05.2016 10:13:10

Re: Компилирует без ошибок,но...

Сообщение vvvch » 19.06.2016 21:00:59

Bombucho
Я тут накидал на скорую руку. Без математики (лень было вспоминать). Разбирайтесь. Правда классы заменены объектами, они проще. И я ещё забыл что можно обойтись без New и Dispose, сделав объекты статическими.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
vvvch
постоялец
 
Сообщения: 105
Зарегистрирован: 26.04.2013 11:05:39
Откуда: г.Боровичи, Новг. обл.

Re: Компилирует без ошибок,но...

Сообщение AlphaBlend » 19.06.2016 21:10:27

new и dispose ? Простите , а зачем ? Классы прекрасно работают с памятью сами . Create , Free :roll:
Аватара пользователя
AlphaBlend
постоялец
 
Сообщения: 207
Зарегистрирован: 22.05.2016 10:13:10

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 234

Рейтинг@Mail.ru