Компилирует без ошибок,но...
Модератор: Модераторы
- AlphaBlend
- постоялец
- Сообщения: 207
- Зарегистрирован: 22.05.2016 09:13:10
вы не описали саму процедуру
AlphaBlend
Если Вы используете Windows, то можно делать так:
В uses добавляете модуль Windows, потом когда нужно вывести что-то в Log, то пишете в коде OutputDebugString(PChar('Вывод текста')); Текст это всегда строка, если надо вывести что-то другое, то используйте ф-ю format так OutputDebugString(PChar(Format('текст для вывода %d',[var]))); var - целая переменная (посмотрите описание ф-ии format, там много чего можно)
Теперь открываете окно "Журнал событий" (Вид\Окна отладки\Журнал событий).
В свойствах Окна (Правая кнопка мыши\ Параметры журнала событий) ставите галку "вывод" в "Сообщениях" далее "Ок". Всё. Сам этим пользуюсь уже давно, установка точек останова не всегда хорошо. Сначала ф-я OutputDebugString не выводила русские буквы, написал разработчикам Lazarus, исправили, сейчас нормально.
Если Вы используете Windows, то можно делать так:
В uses добавляете модуль Windows, потом когда нужно вывести что-то в Log, то пишете в коде OutputDebugString(PChar('Вывод текста')); Текст это всегда строка, если надо вывести что-то другое, то используйте ф-ю format так OutputDebugString(PChar(Format('текст для вывода %d',[var]))); var - целая переменная (посмотрите описание ф-ии format, там много чего можно)
Теперь открываете окно "Журнал событий" (Вид\Окна отладки\Журнал событий).
В свойствах Окна (Правая кнопка мыши\ Параметры журнала событий) ставите галку "вывод" в "Сообщениях" далее "Ок". Всё. Сам этим пользуюсь уже давно, установка точек останова не всегда хорошо. Сначала ф-я OutputDebugString не выводила русские буквы, написал разработчикам Lazarus, исправили, сейчас нормально.
vvvch
Благодарю, всё работает отлично
Да
Благодарю, всё работает отлично
vvvch писал(а):установка точек останова не всегда хорошо
Да
resident
Вообще-то я это не Вам писал, думаю Вы это и без меня знаете.
Просто несколько раньше AlphaBlend мне ответила что LNet поще Synapse, вот и решил "отплатить"...
Вообще-то я это не Вам писал, думаю Вы это и без меня знаете.
Просто несколько раньше AlphaBlend мне ответила что LNet поще Synapse, вот и решил "отплатить"...
- AlphaBlend
- постоялец
- Сообщения: 207
- Зарегистрирован: 22.05.2016 09:13:10
в каком смысле "отплатить" ?
я не права ? По-моему Lnet проще ))
Добавлено спустя 36 секунд:
но за совет спасибо . Однако я использую Linux ) но теперь знать буду , все равно спасибо )
Добавлено спустя 36 секунд:
но за совет спасибо . Однако я использую Linux ) но теперь знать буду , все равно спасибо )
А разве я что-то плохое посоветовал? Думаю Вы сами не понимаете какую мысль вы мне подали 
- AlphaBlend
- постоялец
- Сообщения: 207
- Зарегистрирован: 22.05.2016 09:13:10
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));
- AlphaBlend
- постоялец
- Сообщения: 207
- Зарегистрирован: 22.05.2016 09:13:10
Bombucho разобрались Вы со своей задачей ? 
Добавлено спустя 2 минуты 4 секунды:
не разобрались ...
Добавлено спустя 2 минуты 4 секунды:
не разобрались ...
AlphaBlend писал(а):Bombucho разобрались Вы со своей задачей ?
Добавлено спустя 2 минуты 4 секунды:
не разобрались ...
Пишет мол project1 вызвал класс исключений...сижу разбираюсь
vvvch писал(а):Вообще-то я это не Вам писал, думаю Вы это и без меня знаете.
Просто несколько раньше AlphaBlend мне ответила что LNet поще Synapse, вот и решил "отплатить"...
Да? Забавно. И кому мне теперь вернуть?
Ведь ответили-то вы на мой вопрос, а не на её.
viewtopic.php?f=5&t=11178#p98641
viewtopic.php?t=11179&view=unread#unread
Последний раз редактировалось resident 19.06.2016 18:30:24, всего редактировалось 1 раз.
resident
Наверно "глюк", когда я отправил у меня была ошибка. Извините...
Наверно "глюк", когда я отправил у меня была ошибка. Извините...
- AlphaBlend
- постоялец
- Сообщения: 207
- Зарегистрирован: 22.05.2016 09:13:10
Bombucho
Я уже не знаю ... Издеваться над классами , Свойствами и методами можно долго
Можно наворотить класс скрытыми методами , свойствами , виртуальными методами , раскрыть все проблемы "геометрической фигуры квадрат , прямоугольник" ... ( в начале исходного кода Вы натолкнетесь на порывы мои так и сделать ). Реализация класса "квадрат", который умеет возвращать все требуемые Вам значения . Пожалуйста , будьте внимательны и посмотрите , как написан код . Постарайтесь придерживаться тех же правил и не стесняйтесь обращаться к учебникам и гуглам
Вам удачи , и спокойной бессонной студенческой ночи )
Добавлено спустя 7 минут 57 секунд:
P.S. Если математика моя хромая , то извините
Я уже не знаю ... Издеваться над классами , Свойствами и методами можно долго
Код: Выделить всё
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. Если математика моя хромая , то извините
Bombucho
Я тут накидал на скорую руку. Без математики (лень было вспоминать). Разбирайтесь. Правда классы заменены объектами, они проще. И я ещё забыл что можно обойтись без New и Dispose, сделав объекты статическими.
Я тут накидал на скорую руку. Без математики (лень было вспоминать). Разбирайтесь. Правда классы заменены объектами, они проще. И я ещё забыл что можно обойтись без New и Dispose, сделав объекты статическими.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- AlphaBlend
- постоялец
- Сообщения: 207
- Зарегистрирован: 22.05.2016 09:13:10
new и dispose ? Простите , а зачем ? Классы прекрасно работают с памятью сами . Create , Free 
