Форум: "Прочее";
Текущий архив: 2012.02.05;
Скачать: [xml.tar.bz2];
ВнизХм, задачка... Найти похожие ветки
← →
vuk © (2011-10-15 20:09) [80]to Rouse_ © (15.10.11 19:55) [79]:
> и вообще при чем тут отрисовка, когда изначальный вопрос
> совершенно другой?
Изначальный вопрос - какой вариант кода неверный и почему. Мой ответ - неверные оба (даже если канвас блокировать), потому, что написаны не там, где надо. Если писать там, где надо, они оба нормальные. Потому, что OnPaint сделан так, чтобы канвас инвалидом не стал, ага.
← →
Rouse_ © (2011-10-15 20:40) [81]
> Мой ответ - неверные оба
А ты ТЗ видел чтобы данное утверждать ? :)
> Потому, что OnPaint сделан так, чтобы канвас инвалидом не
> стал
Угу, это есть, однако WM_PAINT так не сделан...
← →
vuk © (2011-10-15 20:48) [82]to Rouse_ © (15.10.11 20:40) [81]
> А ты ТЗ видел чтобы данное утверждать ? :)
Не, не видел. Если в ТЗ написано - сделать, чтобы был баг, то к программе вопросов нет. Но тогда есть к ТЗ. :)
> Угу, это есть, однако WM_PAINT так не сделан...
Ага. Но вот чтобы перекрывать обработчики оконных сообщений, уже требуется понимание, как делать это правильно или готовность искать причины всяких странных эффектов. Если понимания/готовности нет - не выпендривайтесь, слушайте песню "Валенки". :)
← →
Rouse_ © (2011-10-15 20:55) [83]
> vuk © (15.10.11 20:48) [82]
> Не, не видел. Если в ТЗ написано - сделать, чтобы был баг,
> то к программе вопросов нет. Но тогда есть к ТЗ. :)
Ну вот задача была реализовать код показывающий недокументированное поведение контрола TMemo. Напиши другой вариант кода, более правильно по твоему мнению реализующий данную задачу.
← →
Игорь Шевченко © (2011-10-15 21:03) [84]
> Ну вот задача была реализовать код показывающий недокументированное
> поведение контрола TMemo
С какого тут боку TMemo ?procedure TForm1.Button3Click(Sender: TObject);
var
DC: HDC;
S: String;
begin
DC := Canvas.Handle;
S := Button3.Caption;
SendMessage(Button2.Handle, WM_NULL, 0, 0);
TextOut(DC, 10, 10, PChar(S), Length(S));
end;
Не рисуетprocedure TForm1.Button4Click(Sender: TObject);
var
DC: HDC;
S: String;
begin
S := Button4.Caption;
SendMessage(Button2.Handle, WM_NULL, 0, 0);
DC := Canvas.Handle;
TextOut(DC, 10, 10, PChar(S), Length(S));
end;
рисует
← →
Rouse_ © (2011-10-15 21:06) [85]Приваильно, только Мемо вместо вот этого
SendMessage(Button2.Handle, WM_NULL, 0, 0)
шлет сообщение
SendMessage(Memo.Handle, EM_GETLINE, Index, Longint(@Text))
что собственно получается те-же яйцы...
← →
vuk © (2011-10-15 21:11) [86]to Игорь Шевченко © (15.10.11 21:03) [84]:
> С какого тут боку TMemo ?
Вот-вот. Тут не TMemo виноват, а цикл обработки сообщений внутри VCL. Ну так никто и не обещал, что если в процессе обработки одного сообщения отправлять другое и ждать его обработки, не будет никаких побочных эффектов.
← →
Игорь Шевченко © (2011-10-15 21:13) [87]Rouse_ © (15.10.11 21:06) [85]
Я полагаю, что любое обращение к TWinControl.MainWndProc в промежутке между Canvas.GetHandle и использованием полученного DC для рисования будет давать подобный эффект.
А теперь, внимание, вопрос - как сделать, чтобы и в этом случае рисовало ?
← →
vuk © (2011-10-15 21:17) [88]to Игорь Шевченко © (15.10.11 21:13) [87]:
> А теперь, внимание, вопрос - как сделать, чтобы и в этом
> случае рисовало ?
Я уже упомянул Canvas.Lock. Ну и Unlock к нему. В OnPaint как раз все залочено, поэтому там все работает.
← →
Rouse_ © (2011-10-15 21:21) [89]
> А теперь, внимание, вопрос - как сделать, чтобы и в этом
> случае рисовало ?
Помимо того что перечислил vuk, через TextOut(Canvas.Handle, есественно...
← →
Игорь Шевченко © (2011-10-15 21:22) [90]vuk © (15.10.11 21:17) [88]
Я имею в виду, чтобы кривой код приведенных методов не менять. Новые методы можно добавлять.
← →
Rouse_ © (2011-10-15 21:23) [91]А по поводу memo я там выше сказал что можно использовать и другой контрол, просто в данном случае пример написан с использованием TMemo...
← →
Jeer © (2011-10-15 22:24) [92]В общем, "мужик" считал, что у него есть яйца, а ему изобрели способ виртуально доказать обратное.
А, "мужик"-то с яйцами и он знает как правильно их применять.
P.S.
Фокусы подобного рода информативно бессмысленны.
← →
Юрий Зотов © (2011-10-15 23:11) [93]> Rouse_ © (14.10.11 23:31)
> Сия задача была озвучена в Августе 2004-го года
Розыч, ну и память у тебя...
:o)
← →
Eraser © (2011-10-15 23:51) [94]> [80] vuk © (15.10.11 20:09)
В обещм случае обращение к TCanvas может быть не только для того, чтобы что-то на ней наприсовать. Возможно, к примеру, срисовать или замерить ) но это уже частности )
← →
Германн © (2011-10-16 01:00) [95]
> vuk © (15.10.11 14:05) [60]
>
> to Inovet © (15.10.11 14:00) [57]:
>
> > Вот для чего 8 байт? Упаковать в 5.
>
> Не все типы штрихкодов позволяют работать с символами, отличными
> от цифр. Я почему и говорю - тут либо стреляться либо тип
> кода менять.
Прошу прощения за оффтоп.
У заказчика дорогая "мерканская" система доступа. По всем признакам используется некие карты со штрих-кодом в стандарте EAN-13. Так что изменить формат я не властен. Но вроде DallasSemiconductors и фирма, которая перекупила права на сей продукт у DS, ведут себя "грамотно". И 5-ти байт кода ключа более чем достаточно. Ибо более старшие байты пока нулевые, т.е. одинаковые для всех ключей.
Ещё раз прошу прощения за оффтоп. Больше я на эту тему в этой ветке высказываться не буду.
← →
* © (2011-10-16 11:27) [96]
> EAN-13
ean-13 можно свести к 12 байтам
13й - check-digit, его можно расчитывать
может поможет
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2012.02.05;
Скачать: [xml.tar.bz2];
Память: 0.61 MB
Время: 0.007 c