Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1319835964
Alek
2011-10-29 01:06
2012.02.05
Передача метода класса по ссылке


15-1318947354
И. Павел
2011-10-18 18:15
2012.02.05
Работа с БД в C#


15-1318936207
Цукор5
2011-10-18 15:10
2012.02.05
route add


15-1318762788
TUser
2011-10-16 14:59
2012.02.05
Видео тоже есть


2-1319447555
Laguna
2011-10-24 13:12
2012.02.05
Ввод в TЕdit руками или сканером штрихкода.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский