Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2011, 02:07   #11
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

http://www.google.ru/search?q=delphi+scanline
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 07.10.2011, 06:51   #12
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Vova777 Посмотреть сообщение
Есть ли более быстрая (существенно быстрая) альтернатива данному (for...to...do) фрагменту кода?
Прежде чем думать о цикле, ты о его теле позаботься сначала.. До ScanLine тут надо кое о чем еще позаботиться..

Вместо этого кошмарно дикого количества if'ов, сделай один case - работать будет НАМНОГО быстрее.. Ты же 40 раз обращаешься к одному и тому же пикселу!!! Причем, ты это не прекращаешь делать, даже если заведомо известно, что значение не попадется, поскольку оно уже было - хоть бы уж else поставил что ли.. На худой конец - переприсвой его обычной переменной! Если тебя 40 человек подряд спросит, который час - ты будешь 40 раз на часы смотреть?
Код:
procedure TForm1.ScanTools;
var
  axq, ayq: word;
begin
  for ayq:= 0 to Image1.Height do
    begin
      for axq:= 0 to Image1.Width do
        case Image1.Canvas.Pixels[axq, ayq] of
          $000000: field[axq, ayq]:= 1;
          $000001: field[axq, ayq]:= 2;
          {и так далее...до 40} 
          $110000: field[axq, ayq]:= 40;
        end;
    end;
end;
То есть, я, конечно, согласен, что ScanLine намного быстрее, чем попиксельный доступ, но все равно такие ляпы, как ты выше написал, лучше не делать..

Совет тебе: когда будешь делать со ScanLine - не делай его 40 раз.. Уверяю тебя, 10-12 раз присвоить одно и то же значение одной и той же переменной обычно хватает, чтоб эта дура машина наконец запомнила..
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 07.10.2011 в 06:59.
TinMan вне форума Ответить с цитированием
Старый 07.10.2011, 07:23   #13
Стелс
Я с вами :-)
Форумчанин
 
Аватар для Стелс
 
Регистрация: 19.10.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение

Совет тебе: когда будешь делать со ScanLine - не делай его 40 раз.. Уверяю тебя, 10-12 раз присвоить одно и то же значение одной и той же переменной обычно хватает, чтоб эта дура машина наконец запомнила..
молодец !! держи +1
٩(๏̯͡๏)۶٩(๏̯͡๏)۶٩(๏̯͡๏)۶ моя любимая книга - Окна for чайников . Кодить начал ещё вчера . ......кто там кодит ? Да не кто не кодит это я куякнулся
Стелс вне форума Ответить с цитированием
Старый 07.10.2011, 15:39   #14
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
Совет тебе: когда будешь делать со ScanLine - не делай его 40 раз.. Уверяю тебя, 10-12 раз присвоить одно и то же значение одной и той же переменной обычно хватает, чтоб эта дура машина наконец запомнила..
Я думаю, она с первого раза запомнит . Она же не дура
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Microsoft eMbedded Visual C++ или "есть ли альтернатива?" Хрюн моржов Visual C++ 10 08.10.2009 00:50
Альтернатива элементу "file"? sergoss PHP 2 30.09.2009 07:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Помогите с составлением кода для игры "О, счастливчик"! kotzzz Общие вопросы Delphi 33 04.02.2009 05:21
Нет в русском языке "ложит", есть - "кладет". mihali4 Свободное общение 25 01.04.2008 11:19