почему русские разработчики lazarus такие злые?

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

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

почему русские разработчики lazarus такие злые?

Сообщение z.g » 08.05.2010 02:11:15

собственно по мотивам.
да я понимаю баг в винде. да формально никто не обязан исправлять. и я понял бы, если бы там был воркэраунд на килобайты кода, или с жуткими сайд эффектами, и производительность проседала невероятно. но реально-то ничего этого нет. фикс простой. проблему решает.
If you want you can fix it in your application.
ну и хотелось бы услышать способы исправления:
1. способы исправления в уже готовых приложениях.
2. способы исправления в своём приложении без правки lcl.
z.g
новенький
 
Сообщения: 17
Зарегистрирован: 15.02.2010 01:02:45

Re: почему русские разработчики lazarus такие злые?

Сообщение Logo » 08.05.2010 06:42:56

z.g писал(а):собственно по мотивам.
да я понимаю баг в винде....

Это вы по отношению к Павлу Ишенину?
Вы знаете, а я вот удивляюсь, как у него хватает терпения выслушивать от юзеров всякий бред, обвинения, хамство и при этом еще и эффективно работать.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: почему русские разработчики lazarus такие злые?

Сообщение AbakAngelSoft » 08.05.2010 10:51:00

z.g писал(а):собственно по мотивам.

Перечитал несколько раз - так и не нашел злых разработчиков.
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Re: почему русские разработчики lazarus такие злые?

Сообщение z.g » 08.05.2010 11:04:16

Logo писал(а):Это вы по отношению к Павлу Ишенину?
Вы знаете, а я вот удивляюсь, как у него хватает терпения выслушивать от юзеров всякий бред, обвинения, хамство и при этом еще и эффективно работать.
ну объясните в чём бред, хамство и т.д. ну и на два вопроса ответы раскажите.
AbakAngelSoft писал(а):Перечитал несколько раз - так и не нашел злых разработчиков.
может быть не злые. но без аргументов и с бесполезными советами. я не знаю как это назвать одним словом по другому.
z.g
новенький
 
Сообщения: 17
Зарегистрирован: 15.02.2010 01:02:45

Re: почему русские разработчики lazarus такие злые?

Сообщение скалогрыз » 08.05.2010 12:08:56

Русский developing - бессмысленный и беспощадный! :D

z.g писал(а):и производительность проседала невероятно

а она кстати, будет проседать невероятно. например при выводе 10000 точек, таким вот способом.
предлагаю даже написать тест и сравнить скорость работы, например в WinXP, отрисовки точек до патчевым и послепатчевым способом!
Опыт работы с DC функциями подсказывает, что скорость упадёт значительно... хотя бы просто за счёт дополнительных call-ов. Не забываем, что на старых компах (где, как-раз висты нет), скорость упадёт ещё сильнее!

z.g писал(а):фикс простой. проблему решает.

Фикс плохой, потому что диктует "фикс для висты" абсолютно для всех Windows систем.

правильнее было бы так:
Код: Выделить всё
procedure VistaSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: COLORREF);
var
  pen, oldpen: HPEN;
begin
  if x and 8=0 then
    Windows.SetPixel(CanvasHandle, X, Y, Windows.ColorRef(ColorToRGB(AColor)))
  else begin
    pen := Windows.CreatePen(PS_SOLID, 1, Windows.ColorRef(ColorToRGB(AColor)));
    oldpen := Windows.SelectObject(CanvasHandle, pen);
    Windows.MoveToEx(CanvasHandle, X, Y, nil);
    Windows.LineTo(CanvasHandle, X, Y + 1);
    Windows.SelectObject(CanvasHandle, oldpen);
    Windows.DeleteObject(pen);
  end;
end;

procedure WinSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor);
begin
  Windows.SetPixel(CanvasHandle, X, Y, Windows.ColorRef(ColorToRGB(AColor)));
end;

var
  IntSetPixel : procedure (anvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor) = @WinSetPixel;

procedure TWin32WidgetSet.DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor);
begin
  IntSetPixel(CanvasHandle, X,Y, AColor);
end;

constructor TWin32WidgetSet.Create;
begin
  ...
  if isWindowsVista then IntSetPixel:=@VistaSetPixel;
  ...
end;

и никому не будет больно... кроме висты ;)

z.g писал(а):1. способы исправления в уже готовых приложениях.

если имеется в виду, уже скомпилированных, то ответ - никак! баг Висты :)
любое приложение использовавшее в Висте SetPixel API, без пересборки не заработает.

z.g писал(а):2. способы исправления в своём приложении без правки lcl.

Код: Выделить всё
procedure MySetPixel(c: TCanvas; x,y: integer; color: TColor);
var
  b : TColor;
begin
  if not isVista then
    c.SetPixel(x,y, color);
  else begin
    b:=c.Pen.Color; // penwidth+pen+style
    c.Pen.Color:=color;
    c.FillRect(x, y,x+1, y+1)
    c.Pen.Color:=b;
  end ;
end;

Но лучший способ - выкинуть SetPixel нафик (зачем он используется?!). Вместо него использовать, например, TBitmap.

Добавлено спустя 4 минуты 51 секунду:
вот ещё можно так написать:
to: Lazarus mailing list <lazarus@lists.lazarus.freepascal.org>
subject: Russian Lazarus developers.

Hello Lazarus team

Why Russian Lazarus developers are so cruel?! Aren't you feeding them?
Could you please reassign the issue (http://bugs.freepascal.org/view.php?id=15822) to some other maintainer not Russian, please. I find my patch to be working, but for some reason, your Russian developer refuses to accept it. I think it's because he's Russian.

Regards,
z.g

Такое письмо порадует немецких разработчиков на 8-9 мая :mrgreen:

сорри за троллинг! весна чо!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: почему русские разработчики lazarus такие злые?

Сообщение z.g » 08.05.2010 14:14:30

скалогрыз писал(а):а она кстати, будет проседать невероятно. например при выводе 10000 точек, таким вот способом.
18%. не вижу ничего невероятного.

Фикс плохой, потому что диктует "фикс для висты" абсолютно для всех Windows систем.

правильнее было бы так:
Код: Выделить всё
procedure VistaSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: COLORREF);
var
  pen, oldpen: HPEN;
begin
  if x and 8=0 then
    Windows.SetPixel(CanvasHandle, X, Y, Windows.ColorRef(ColorToRGB(AColor)))
  else begin
    pen := Windows.CreatePen(PS_SOLID, 1, Windows.ColorRef(ColorToRGB(AColor)));
    oldpen := Windows.SelectObject(CanvasHandle, pen);
    Windows.MoveToEx(CanvasHandle, X, Y, nil);
    Windows.LineTo(CanvasHandle, X, Y + 1);
    Windows.SelectObject(CanvasHandle, oldpen);
    Windows.DeleteObject(pen);
  end;
end;

procedure WinSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor);
begin
  Windows.SetPixel(CanvasHandle, X, Y, Windows.ColorRef(ColorToRGB(AColor)));
end;

var
  IntSetPixel : procedure (anvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor) = @WinSetPixel;

procedure TWin32WidgetSet.DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor);
begin
  IntSetPixel(CanvasHandle, X,Y, AColor);
end;

constructor TWin32WidgetSet.Create;
begin
  ...
  if isWindowsVista then IntSetPixel:=@VistaSetPixel;
  ...
end;

и никому не будет больно... кроме висты ;)
да без проблем. однако:
LCL has no goal to workaound system behavior.

т.е. про производительность ничего сказано не было. нет и всё!

z.g писал(а):2. способы исправления в своём приложении без правки lcl.

Код: Выделить всё
procedure MySetPixel(c: TCanvas; x,y: integer; color: TColor);
var
  b : TColor;
begin
  if not isVista then
    c.SetPixel(x,y, color);
  else begin
    b:=c.Pen.Color; // penwidth+pen+style
    c.Pen.Color:=color;
    c.FillRect(x, y,x+1, y+1)
    c.Pen.Color:=b;
  end ;
end;
и как это поможет в отрисовке dbgrid?

Но лучший способ - выкинуть SetPixel нафик (зачем он используется?!).
вопрос не ко мне, а к разработчикам lcl. там он используется ровно в двух местах: сеточку в дизайне на форме рисовать (можно пережить) и фокусного элемента в dbgrid. а вот это уже плохо. собственно второй вопрос можно переформулировать: как исправить отрисовку стандартного dbgrid'а?

кстити не очень понятно почему используется SetPixel/DrawRubberRect при наличии DrawFocusRect.
z.g
новенький
 
Сообщения: 17
Зарегистрирован: 15.02.2010 01:02:45

Re: почему русские разработчики lazarus такие злые?

Сообщение скалогрыз » 08.05.2010 16:47:12

z.g писал(а):18%. не вижу ничего невероятного.

18%?! ужос!

и как это поможет в отрисовке dbgrid?
...
вопрос не ко мне, а к разработчикам lcl. там он используется ровно в двух местах: сеточку в дизайне на форме рисовать (можно пережить) и фокусного элемента в dbgrid. а вот это уже плохо. собственно второй вопрос можно переформулировать: как исправить отрисовку стандартного dbgrid'а?

так может прислать патч, который выполняет рисование без использования SetPixel? ;) мотивируя тем, что SetPixel устаревшая операция... мало того, DBGrid поддерживает нерусский разработчик! :mrgreen:

кстати не очень понятно почему используется SetPixel/DrawRubberRect при наличии DrawFocusRect.

чтобы она выглядела одинаково (а не нативно) на всех системах?!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: почему русские разработчики lazarus такие злые?

Сообщение Odyssey » 08.05.2010 17:11:40

z.g писал(а):и как это поможет в отрисовке dbgrid?

Про DBGrid в багтрекере упомянуто не было, а без этого уточнения действительно может показаться что вы используете SetPixel сами и можете добавить workaround в собственное приложение. Если поднять вопрос именно по второму варианту:
z.g писал(а):как исправить отрисовку стандартного dbgrid'а?

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

P.S. Похожую проблему Vincent закрыл из-за невоспроизводимости.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: почему русские разработчики lazarus такие злые?

Сообщение z.g » 08.05.2010 18:42:15

скалогрыз писал(а):
z.g писал(а):18%. не вижу ничего невероятного.

18%?! ужос!
при собственной тормознутости setpixel 18% там ничего не решают.
так может прислать патч, который выполняет рисование без использования SetPixel? ;) мотивируя тем, что SetPixel устаревшая операция... мало того, DBGrid поддерживает нерусский разработчик! :mrgreen:
может быть.
кстати не очень понятно почему используется SetPixel/DrawRubberRect при наличии DrawFocusRect.

чтобы она выглядела одинаково (а не нативно) на всех системах?!
скорее всего. но это вступает в противоречие с предыдущим предложением.
Odyssey писал(а):
z.g писал(а):и как это поможет в отрисовке dbgrid?

Про DBGrid в багтрекере упомянуто не было
в Additional Information ссылка на связанный баг. там как раз про грид.
а без этого уточнения действительно может показаться что вы используете SetPixel сами и можете добавить workaround в собственное приложение.
в собственном приложении я могу вызвать собственную реализацию.
z.g
новенький
 
Сообщения: 17
Зарегистрирован: 15.02.2010 01:02:45

Re: почему русские разработчики lazarus такие злые?

Сообщение скалогрыз » 08.05.2010 19:23:07

я бы предложил пересмотреть патч. Т.е. как выше, рисовать прямоугольники 1x1, только для Висты.

Кроме того, добавил бы ещё 1 патч, который рисует выделение в DBGrid-е НЕ используя SetPixel.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: почему русские разработчики lazarus такие злые?

Сообщение z.g » 08.05.2010 19:32:02

скалогрыз писал(а):я бы предложил пересмотреть патч.
я не против пересмотра, но смысл? было ж чётко сказанно:
LCL has no goal to workaound system behavior.
собственно эта фраза и побудила к созданию топика.
z.g
новенький
 
Сообщения: 17
Зарегистрирован: 15.02.2010 01:02:45

Re: почему русские разработчики lazarus такие злые?

Сообщение скалогрыз » 08.05.2010 20:05:56

z.g писал(а):я не против пересмотра, но смысл? было ж чётко сказанно:
LCL has no goal to workaround system behavior.

собственно эта фраза и побудила к созданию топика.

ну... всё правильно, смысл LCL в кросс-платформенной разработке.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: почему русские разработчики lazarus такие злые?

Сообщение z.g » 08.05.2010 20:21:27

скалогрыз писал(а):ну... всё правильно, смысл LCL в кросс-платформенной разработке.
как предложенный патч ломает кросплатформенность? наоборот, под w2k8/вистой проблема решается.
вообще поиск слова "workaround" в папке \lcl\interfaces сильно противоречит указанной фразе.
z.g
новенький
 
Сообщения: 17
Зарегистрирован: 15.02.2010 01:02:45

Re: почему русские разработчики lazarus такие злые?

Сообщение скалогрыз » 08.05.2010 20:26:20

z.g писал(а):наоборот, под w2k8/вистой проблема решается.

а проблема-то только в висте...?!

workaround используется два раза :)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: почему русские разработчики lazarus такие злые?

Сообщение z.g » 08.05.2010 20:43:28

скалогрыз писал(а):а проблема-то только в висте...?!
виста и сервер 2008-ой (сервера бывают терминальные, и на них тоже запускаются приложения).
workaround используется два раза :)
это только в win32. во всех интервейсах — поболее.
z.g
новенький
 
Сообщения: 17
Зарегистрирован: 15.02.2010 01:02:45

След.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: Google [Bot] и гости: 40

Рейтинг@Mail.ru