Просьба плотно потестировать Lazarus

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

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

Re: Просьба плотно потестировать Lazarus

Сообщение dps » 10.09.2008 13:59:43

Павел Ишенин писал(а):Может файл особый?

Ошибка выдается на любом файле.
В ubuntu 8.04 x64 совершаю следующие действия:
1. запускаю Lazarus с пустым проектом
2. пытаюсь изменить кодировку файла.
В консоли получаю сообщения:
Код: Выделить всё
TMainIDE.ParseCmdLineOptions:
  PrimaryConfigPath="/home/dps/.lazarus"
  SecondaryConfigPath="/etc/lazarus"
NOTE: help options config file not found - using defaults
TMainIDE.DoNewProject A
TCustomFormEditor.CreateComponent Form1:TForm1 True
TMainIDE.DoNewEditorFile END unit1.pas
TSourceNotebook.EncodingClicked CP1251
TSourceNotebook.EncodingClicked Old=utf8 New=CP1251
TApplication.HandleException Access violation
  Stack trace:
  $00000000006A5307
dps
незнакомец
 
Сообщения: 3
Зарегистрирован: 10.09.2008 09:32:35

Re: Просьба плотно потестировать Lazarus

Сообщение v-t-l » 10.09.2008 15:01:31

Баг в lcl/include/canvas.inc
Код: Выделить всё
procedure TCanvas.GradientFill(ARect: TRect; AStart, AStop: TColor;
  ADirection: TGradientDirection);
var
  RStart, RStop: Byte;
  GStart, GStop: Byte;
  BStart, BStop: Byte;
  RDiff, GDiff, BDiff: Integer;
  Count, I: Integer;

begin
  RedGreenBlue(ColorToRGB(AStart), RStart, GStart, BStart);
  RedGreenBlue(ColorToRGB(AStop),  RStop,  GStop,  BStop);

  if ADirection = gdVertical then Count := ARect.Bottom - ARect.Top
                             else Count := ARect.Right - ARect.Left;
                             
  RDiff := RStop - RStart;
  GDiff := GStop - GStart;
  BDiff := BStop - BStart;

  Changing;
  for I := 0 to Count do
  begin
    Pen.Color := RGBToColor(RStart + (i * RDiff) div Count,
                            GStart + (i * GDiff) div Count,
                            BStart + (i * BDiff) div Count); // BUG: if Count=0 then we'll got "divide by zero" error

Должно быть:
Код: Выделить всё
procedure TCanvas.GradientFill(ARect: TRect; AStart, AStop: TColor;
  ADirection: TGradientDirection);
var
  RStart, RStop: Byte;
  GStart, GStop: Byte;
  BStart, BStop: Byte;
  RDiff, GDiff, BDiff: Integer;
  Count, I: Integer;

begin
  if ((ARect.Bottom - ARect.Top)=0) or ((ARect.Right - ARect.Left)=0) then Exit; // Nothing to paint
  ...
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Просьба плотно потестировать Lazarus

Сообщение Павел Ишенин » 10.09.2008 15:38:19

v-t-l, спасибо, исправил.
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: Просьба плотно потестировать Lazarus

Сообщение v-t-l » 10.09.2008 15:45:40

Павел Ишенин писал(а):v-t-l, спасибо, исправил.

А я дорвался до багтрекера и уже запостил :D . Issue ID 0012115
Кстати, стоит подумать насчет такой проверки в некоторых других процедурах. Зачем производить сложные вычисления, если рисовать нечего или не на чем.

Добавлено спустя 10 минут 53 секунды:
Посмотрел исправления. Не совсем хорошо. Я тоже сначала подумал перенести вычисление Count в начало, но если допустим, что ADirection = gdVertical, а ширина Rect = 0 или ADirection = gdHorizontal, а высота Rect = 0, то будем долго и упорно вычислять что-то для рисования нигде.
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Просьба плотно потестировать Lazarus

Сообщение Павел Ишенин » 10.09.2008 17:46:21

Посмотрел исправления. Не совсем хорошо. Я тоже сначала подумал перенести вычисление Count в начало, но если допустим, что ADirection = gdVertical, а ширина Rect = 0 или ADirection = gdHorizontal, а высота Rect = 0, то будем долго и упорно вычислять что-то для рисования нигде.


Можно оптимизировать, но можно надеяться на благоразумие разработчика, который использует эту функцию.
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: Просьба плотно потестировать Lazarus

Сообщение alexs » 10.09.2008 17:54:08

v0.9.25 r15918:16519M i386-linux-gtk 2 (beta)
Free Pascal Compiler version 2.3.1 [2008/09/04] for i386
Copyright (c) 1993-2008 by Florian Klaempfl

Не сохраняются булевые проперти. А именно - на формах лежат объекты FBDataSet - выставляю свойство CashedUpdates = true в инспекторе - при запуске программы - они false. Таже петрушка для элементов TToolPanel - TToolbarItem - свойство ShowCaption.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Просьба плотно потестировать Lazarus

Сообщение Павел Ишенин » 10.09.2008 18:58:30

alexs, это новый баг в fpc. Используй 2.2.2 :) И еще, читай чаще личные сообщения.
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: Просьба плотно потестировать Lazarus

Сообщение Logo » 10.09.2008 19:56:03

Павел Ишенин писал(а):
Logo писал(а):Ой! В QT автодополнение совсем перестало работать. С латиницей ошибка, а на кирилицу не реагирует

Не нашел проблем. Нужен пример.

Linux, Lazarus rev. 16525
Widgetsets - QT
Перепробовал все, что мог, с надежой, что что-то у меня не так, но ошибка осталась.
AutoComleteText = True, при наборе латинских символов - RunError(233), при наборе кирилицы - не дополняет.

onUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
в UTF8Key не понятно в какой кодировке передается символ.

GTK работает превосходно!!!
testCombo.tar
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Просьба плотно потестировать Lazarus

Сообщение v-t-l » 10.09.2008 21:18:08

Павел Ишенин писал(а):Можно оптимизировать, но можно надеяться на благоразумие разработчика, который использует эту функцию.

Врядли сторонний разработчик полезет во внутренности LCL, если не возникнет ошибки. Я туда попал именно из-за ошибки при использовании стороннего компонента. :D
Поэтому предлагаю такой вариант:
Код: Выделить всё
procedure TCanvas.GradientFill(ARect: TRect; AStart, AStop: TColor;
  ADirection: TGradientDirection);
var
  RStart, RStop: Byte;
  GStart, GStop: Byte;
  BStart, BStop: Byte;
  RDiff, GDiff, BDiff: Integer;
  Count, I: Integer;
  RH, RW: Integer; // or we can temporary use RDiff, GDiff
begin
  RH := ARect.Bottom - ARect.Top;
  RW := ARect.Right - ARect.Left;

  if (RH=0) or (RW=0) then Exit; // Nothing to paint

  if ADirection = gdVertical then
    Count := RH
  else
    Count := RW;



Добавлено спустя 10 минут 6 секунд:
А еще лучше описать отдельную функцию, что-то типа
function IsValidRect(aRect: TRect): boolean; inline;
и возможно стоит проверять размеры на <=0, а не просто =0.
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Просьба плотно потестировать Lazarus

Сообщение Alexx2000 » 11.09.2008 00:19:18

Павел Ишенин писал(а):Поправил: http://bugs.freepascal.org/view.php?id=12112 r16518

Спасибо, теперь работает
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Просьба плотно потестировать Lazarus

Сообщение Павел Ишенин » 11.09.2008 03:20:51

v-t-l писал(а):Врядли сторонний разработчик полезет во внутренности LCL, если не возникнет ошибки. Я туда попал именно из-за ошибки при использовании стороннего компонента. :D


Улучшил в r16530. Надеюсь больше претензий нет :)
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: Просьба плотно потестировать Lazarus

Сообщение v-t-l » 11.09.2008 13:39:13

Павел Ишенин писал(а):Улучшил в r16530. Надеюсь больше претензий нет

Нет предела совершенству :D . Можно было бы вставить такую проверку во все функции, использующие TRect, но это слегка замедлит реальное рисование. :D
Спасибо.
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Просьба плотно потестировать Lazarus

Сообщение Logo » 11.09.2008 17:09:24

Это только у меня уже сутки Lazarus с SVN : Checked out revision 16526, или так оно и есть?
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Просьба плотно потестировать Lazarus

Сообщение Padre_Mortius » 11.09.2008 17:19:41

Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Просьба плотно потестировать Lazarus

Сообщение Logo » 11.09.2008 18:35:49

Спасибо, а я брал из https://lazarus.svn.sourceforge.net/svn ... arus/trunk
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Пред.След.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru