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

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

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

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

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

это только в win32. во всех интервейсах — поболее.

???? проблемы такой нет в WinXP или ранее версиях.


пробую на Vista-64:

Код: Выделить всё

procedure TForm1.FormPaint(Sender: TObject);
var
  i, j : Integer;
begin
  for i:=0 to 999 do
    for j:=0 to 999 do
      Canvas.Pixels[i,j]:=clBlue;
end;   
У вас нет необходимых прав для просмотра вложений в этом сообщении.
z.g
новенький
Сообщения: 17
Зарегистрирован: 15.02.2010 00:02:45

Сообщение z.g »

скалогрыз писал(а):???? проблемы такой нет в WinXP или ранее версиях.
да. сломали в висте, в win7 поломанный код вообще выкинут. в багрепорте есть ссылка на ms группу, ещё в 2007 году обсуждалось.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

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

я ещё раз повторю, если проблема в Висте... то зачем изменять код для ВСЕХ вин версий?

Vista-64 (классическая тема)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
z.g
новенький
Сообщения: 17
Зарегистрирован: 15.02.2010 00:02:45

Сообщение z.g »

скалогрыз писал(а):я ещё раз повторю, если проблема в Висте... то зачем изменять код для ВСЕХ вин версий?
незачем, я с вашим кодом согласился в первом ответе.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

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

ну там ошибка была =) подправил патч и отправил в багрепорт.

самое отвратительное, что с Aero работает... по-правильному - необходимо проверять включено Aero или нет.
.wOvAN
постоялец
Сообщения: 118
Зарегистрирован: 16.04.2010 06:36:12
Контактная информация:

Сообщение .wOvAN »

Проверка на аэро, но вызывать придется на каждый SetPixel (((гемор

Код: Выделить всё

uses DwmApi;

function IsCompositionEnabled: Boolean;
  var Enabled:Bool;
begin
    if DWMDLL_Loaded then  DwmIsCompositionEnabled(Enabled);
    Result := Enabled;
end;

initialization
  if IsVista then
    DWMDLL_Loaded :=  InitDwmLibrary;
  else
    DWMDLL_Loaded:=False;
finalization
  if DWMDLL_Loaded then FreeDwmLibrary;
  DWMDLL_Loaded:=False;
end.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

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

.wOvAN писал(а):Проверка на аэро, но вызывать придется на каждый SetPixel (((гемор

кланяемся в ножки за это M$ программистам :)
если есть оповещение о том, что изменилась тема (аеро или нет), то можно повеситься на него, и менять вызываемую процедуру.
Однако проще забить и рисовать все пиксели на Висте с 9м не нулевым битом через прямоугольник.
Павел Ишенин
постоялец
Сообщения: 475
Зарегистрирован: 24.03.2007 09:16:52

Сообщение Павел Ишенин »

При описании бага не было упомянута зависимость LCL компонент от него. Следовательно поправить системного поведение можно было легко в пользовательском коде. Если код LCL зависит от SetPixel, то можно пойти на предложенный скалогрызом безболезненный для остальных систем метод решения.
z.g
новенький
Сообщения: 17
Зарегистрирован: 15.02.2010 00:02:45

Сообщение z.g »

Павел Ишенин писал(а):При описании бага не было упомянута зависимость LCL компонент от него.
1. можно было уточнить.
2. для меня лично очевидно, что для своих вызовов патчить lcl не обязательно.
3. зависит не только lcl, но ещё как минимум дизайнер.
4. опять же поиск по исходникам lcl не такой уж сложный.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

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

z.g писал(а):1. ...

Думаю нет причин для взаимных обвинений.
Чем больше критических причин "для принятия" патча будет изложено, тем скорее он будет принят ^^

например, "если не принять патч, то реки выйдут из берегов, и день превратиться в ночь, и падёт на нас огненный дождь" звучит убедительно! но "иначе LCL компоненты будут глючить на Висте" звучит ещё убедительнее )) да ещё и со скриншотами... Не у всех же Виста стоит!

я ошибаюсь или патч принят? http://bugs.freepascal.org/view.php?id=15822
zg, твой шаг чтобы закрыть баг репорт?!

кто-нибудь проверял как себя SetPixel ведёт в Делфи под Вистой?!
z.g
новенький
Сообщения: 17
Зарегистрирован: 15.02.2010 00:02:45

Сообщение z.g »

скалогрыз писал(а):Думаю нет причин для взаимных обвинений.
да я никого не обвиняю, патч в итоге приняли, я рад :) (вот так бы с майкрософтом всё просто было).
Чем больше критических причин "для принятия" патча будет изложено, тем скорее он будет принят ^^
для меня это главный опыт данной истории.
zg, твой шаг чтобы закрыть баг репорт?!
в ближайшие дни проверю и если всё ок — закрою.
кто-нибудь проверял как себя SetPixel ведёт в Делфи под Вистой?!
аналогично. это ж системный вызов. но в vcl setpixel используется не так заметно :) сходу только в TBitBtn при каких-то экстремальных свойствах.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

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

z.g писал(а):аналогично. это ж системный вызов. но в vcl setpixel используется не так заметно :) сходу только в TBitBtn при каких-то экстремальных свойствах.

может быть в новых версиях делфи предусмотрено такое же исправление...
z.g
новенький
Сообщения: 17
Зарегистрирован: 15.02.2010 00:02:45

Сообщение z.g »

скалогрыз писал(а):zg, твой шаг чтобы закрыть баг репорт?!
пока закрывать рано.
Ответить