Re[5]: Delphi vs .Net
От: hattab  
Дата: 09.03.10 17:20
Оценка:
Здравствуйте, Sergei I. Gorelkin, Вы писали:

SIG>TJpegImage является наследником TGraphic, значит, он должен уметь напрямую рисоваться в прямоугольник заданного размера с помощью метода TCanvas.StretchDraw. Т.е. не преобразовывать в битмап, а рисовать на канве пустого битмапа.


А рисовать-то напрямую что? Внутреннее представление jpeg не готово для отрисовки. Преобразовывать в битмап по любому придется. Собственно вот реализация:
procedure TJPEGImage.Draw(ACanvas: TCanvas; const Rect: TRect);
begin
  ACanvas.StretchDraw(Rect, Bitmap);
end;


Битмап создается по запросу и кешируется для последующих манипуляций.
Re[5]: Delphi vs .Net
От: hattab  
Дата: 09.03.10 17:48
Оценка:
Здравствуйте, squid, Вы писали:

S>ну есть и кривые методы обхода кривого кода


Понятное дело, что есть Проблема в том, что они кривые

S>типа добавления переменной-флага в цикл для выхода из него. происходит какое-то специфичное событие типа закрытия окна — присваиваешь ей true и все ок. относительно конечно.


Cпагетти я люблю в тарелке, но не в коде
Re[6]: Delphi vs .Net
От: Mr.Cat  
Дата: 09.03.10 18:20
Оценка:
Здравствуйте, hattab, Вы писали:
H>Cпагетти я люблю в тарелке, но не в коде
Ну дык с рекомендуемым в мсдн BackgroundWorker будет примерно то же самое.
Re[7]: Delphi vs .Net
От: hattab  
Дата: 09.03.10 18:39
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

H>>Cпагетти я люблю в тарелке, но не в коде

MC>Ну дык с рекомендуемым в мсдн BackgroundWorker будет примерно то же самое.

Хочешь чтоб я вывод сделал?
Re[8]: Delphi vs .Net
От: Mr.Cat  
Дата: 09.03.10 18:45
Оценка:
Здравствуйте, hattab, Вы писали:
H>Хочешь чтоб я вывод сделал?
Ну сделай. Вероятно, ты знаешь принципиально иной способ нормально прервать поток, кроме как предложить ему прерваться самому.
Re[9]: Delphi vs .Net
От: hattab  
Дата: 09.03.10 19:30
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC> H>Хочешь чтоб я вывод сделал?


MC> Ну сделай. Вероятно, ты знаешь принципиально иной способ нормально прервать поток, кроме как предложить ему прерваться самому.


Это был риторический вопрос. Впрочем... Я же не о чеках флажков говорю. С воркером получается тоже, да не то. Состояние инкапсулируется (пусть даже частично), есть возможность параллельно запустить хоть два, хоть десять... Ну?
avalon 1.0rc2 rev 272
Re: Delphi vs .Net
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 09.03.10 21:48
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Я прифигел. Честно. Хотя проблема подозреваю в том, что .Net обрабатывает все через GDI+, a Delphi использует свои классы. И если delphi версию переписать через GDI+ то производительность по идее должна сравняться. Но пока некогда разбираться...



GDI+ это тормозная, глючная поделка, которую вставили во фреймворк за неимением ничего лучшего. Не проходит и месяца, что бы там баг не нашелся
Re[2]: Delphi vs .Net
От: BlackEric http://black-eric.lj.ru
Дата: 09.03.10 22:41
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, BlackEric, Вы писали:


BE>>Я прифигел. Честно. Хотя проблема подозреваю в том, что .Net обрабатывает все через GDI+, a Delphi использует свои классы. И если delphi версию переписать через GDI+ то производительность по идее должна сравняться. Но пока некогда разбираться...



I>GDI+ это тормозная, глючная поделка, которую вставили во фреймворк за неимением ничего лучшего. Не проходит и месяца, что бы там баг не нашелся


Пусть так. Но лучше то ничего нет?
https://github.com/BlackEric001
Re[5]: Delphi vs .Net
От: Nonmanual Worker  
Дата: 10.03.10 04:39
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>>>Нужно тянуть за собой SysUtils. Не всегда хорошо.

NW>>Не могу вспомнить\придумать случая когда это было бы не хорошо.
NW>>Буду благодарен если просвятите.
BE>Ну практически в каждой фирме есть такое понятите как стандарты кодирования. А вот как и начем они основаны это уже хз.

Вам запрещали явно использовать SysUtils? И все юниты что его юзают? И все юниты что юзают те юниты что его юзают?
Не смешите меня.

BE>>>Нужно тянуть за собой SysUtils. Не всегда хорошо.

Когда это не хорошо?
Если сказали чиста для отмазки, можете не отвечать.
Re[4]: Delphi vs .Net
От: Nonmanual Worker  
Дата: 10.03.10 04:42
Оценка:
Здравствуйте, hattab, Вы писали:

NW>>> Delphi-Style forever

BE>>В данном случае допустимо, т.к. на общую производительность заметного влияния не оказывает. Нужно лишь чтобы программа не производила впечатление полностью повисшей.

H>А она именно такое впечатление производить и будет. Попробуй в течении тех 4 минут нажать на кнопку закрытия окна. Кнопка нажимается? Нажимается. А вот окно закроется только после завершения цикла.


В Delphi-Style есть паттерн для решения этой проблемы
Re[5]: Delphi vs .Net
От: hattab  
Дата: 10.03.10 06:12
Оценка:
Здравствуйте, Nonmanual Worker, Вы писали:

NW> H>А она именно такое впечатление производить и будет. Попробуй в течении тех 4 минут нажать на кнопку закрытия окна. Кнопка нажимается? Нажимается. А вот окно закроется только после завершения цикла.


NW> В Delphi-Style есть паттерн для решения этой проблемы


Озвучишь?
avalon 1.0rc2 rev 272
Re[6]: Delphi vs .Net
От: Nonmanual Worker  
Дата: 10.03.10 07:09
Оценка:
Здравствуйте, hattab, Вы писали:

NW>> В Delphi-Style есть паттерн для решения этой проблемы

H>Озвучишь?

оффтоп:
серьезно нужно озвучивать?
Я думаю этот "паттерн" известен всем, чей первый рабочий язык программирования был Delphi.
Re[7]: Delphi vs .Net
От: hattab  
Дата: 10.03.10 07:36
Оценка:
Здравствуйте, Nonmanual Worker, Вы писали:

NW> NW>> В Delphi-Style есть паттерн для решения этой проблемы


NW> H>Озвучишь?


NW> оффтоп:

NW> серьезно нужно озвучивать?
NW> Я думаю этот "паттерн" известен всем, чей первый рабочий язык программирования был Delphi.

Серьезно.
avalon 1.0rc2 rev 272
Re[6]: Delphi vs .Net
От: Nonmanual Worker  
Дата: 10.03.10 09:12
Оценка:
Здравствуйте, hattab, Вы писали:

NW>> H>А она именно такое впечатление производить и будет. Попробуй в течении тех 4 минут нажать на кнопку закрытия окна. Кнопка нажимается? Нажимается. А вот окно закроется только после завершения цикла.

NW>> В Delphi-Style есть паттерн для решения этой проблемы
H>Озвучишь?
Озвучиваю (прошу обратить внимание что слово "паттерн" используется с иронией):

private
  FNeedClode, FProcessing: Boolean;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FNeedClose := False;
  // TODO дизаблим кнопки и контролы
  FProcessing := True;
  try
    while True do
    begin
      if FNeedClose then
      begin
        if MessageDlg('Close?', mtConfirmation, mbYesNo, 0) = mrYes then
          Break
        else
          FNeedClose := False;
      end;

      // TODO что-то делаем....

      Application.ProcessMessages;
      Sleep(42);
    end;
  finally
    FProcessing := False;
    // TODO енаблим кнопки и контролы
  end;

  if FNeedClose then
    Close;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if FProcessing then
  begin
    FNeedClose := True;
    CanClose := False;
  end
  else
    CanClose := True;
end;
Re[7]: Delphi vs .Net
От: hattab  
Дата: 10.03.10 09:42
Оценка:
Здравствуйте, Nonmanual Worker, Вы писали:

NW> H>Озвучишь?


NW> Озвучиваю (прошу обратить внимание что слово "паттерн" используется с иронией):


NW>
NW> private
NW>   FNeedClode, FProcessing: Boolean;

NW> procedure TForm1.Button1Click(Sender: TObject);
NW> begin
NW>   FNeedClose := False;
NW>   // TODO дизаблим кнопки и контролы
NW>   FProcessing := True;
NW>   try
NW>     while True do
NW>     begin
NW>       if FNeedClose then
NW>       begin
NW>         if MessageDlg('Close?', mtConfirmation, mbYesNo, 0) = mrYes then
NW>           Break
NW>         else
NW>           FNeedClose := False;
NW>       end;

NW>       // TODO что-то делаем....

NW>       Application.ProcessMessages;
NW>       Sleep(42);
NW>     end;
NW>   finally
NW>     FProcessing := False;
NW>     // TODO енаблим кнопки и контролы
NW>   end;

NW>   if FNeedClose then
NW>     Close;
NW> end;

NW> procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
NW> begin
NW>   if FProcessing then
NW>   begin
NW>     FNeedClose := True;
NW>     CanClose := False;
NW>   end
NW>   else
NW>     CanClose := True;
NW> end;

NW>


Ну-у-у... Я ожидал увидеть действительно какой-то паттерн А это спагетти уже обсосали рядышком
avalon 1.0rc2 rev 272
Re[8]: Delphi vs .Net
От: Nonmanual Worker  
Дата: 10.03.10 09:58
Оценка:
Здравствуйте, hattab, Вы писали:

H>Ну-у-у... Я ожидал увидеть действительно какой-то паттерн А это спагетти уже обсосали рядышком


Я же говорил...
Re[4]: Delphi vs .Net
От: Eugeny__ Украина  
Дата: 10.03.10 14:17
Оценка:
Здравствуйте, hattab, Вы писали:


BE>>В .Net я так понимаю хорошим тоном является вынесение подобных операций в отдельный поток?


H>Это везде хорошим тоном является.



Кстати. Недавно пришлось наваять небольшую штуку на j2me. Так там сановский эмулятор прямым текстом на некоторые инструкции(например, доступ к сети) матюкается: мол, КРАЙНЕ не рекомендуется исполнять данное действие в основном потоке, создайте другой.
И это действительно правильно. Приложения, которые подвешивают поток обработки событий, довольно сильно бесят.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.