-
> Не угадали, здесь нет никакой связи.
Значит не угадал. Но "случайным" такое совпадение вряд ли можно назвать. Этому есть и объективные причины.
-
> Значит не угадал.
А это потому, что там редко бываете :-Ь
-
> Ins © (24.11.08 16:31) [61]
:)
-
> clickmaker © (24.11.08 16:23) [59] > если по сабжу, то меня просто наповал убил этот вариант > ответа :) > "OnPaint вызывается во время обратного хода луча развёртки > монитора, чтобы исключить мерцание"
Самое смешное, что это списано почти с натуры :) Задавал у нас один человек такой вопрос - как синхронизировать вывод графики с обратным ходом луча развёртки, а его анимация мерцает. Несколько дней его совместными усилиями убеждали, что мерцание не из-за этого - так и не поверил :)
-
А надо было просто у него уточнить с какой частотой бегает лучик на не ЭЛТ мониторах :)
-
> clickmaker © (24.11.08 16:23) [59]
а меня убил ответ "Нарисованное в OnPaint не стирается после перекрытия формы другими окнами". особенно убило то, что он "правильный".
-
> Нарисованное в OnPaint не стирается после перекрытия формы > другими окнами
ну да. Что написано пером, то не вырубишь топором )
-
> анонимъ (24.11.08 16:47) [65] > а меня убил ответ "Нарисованное в OnPaint не стирается после > перекрытия формы другими окнами". особенно убило то, что > он "правильный".
На том понятийном уровне, который доступен людям, на которых ориентирован этот вопрос, он правильный. Потому что каждый видит: рисуем где хотим, перекрываем другим окном - рисунка нет. Рисуем в OnPaint - рисунок после перекрытия сохраняется. А то, что на самом деле он стёрся, но тут же перерисовался, объясняется в комментарии.
Вы, наверное, в школе тоже считать учились, складывая яблоки с конфетками. И это несмотря на то, что в математике и понятие числа, и понятие операции сложения вводятся совсем по-другому. Просто начинать сразу со сложного тоже нельзя.
-
Для начала отвечу на то, с чем сразу точно не согласен
> Loginov Dmitry © (23.11.08 23:36) [26] > Вопросы в разделе "Классы" попроще. Мне кажется, в п. 4 > перед строкой Obj.IntProp := ... не помешал бы намек в виде > Edit1.Text := 1.5;
Зачем? У программиста должен быть рефлекс на уровне спинного мозга, что пользователь может ввести всё, что угодно. Если в коде есть StrToInt(Edit1.Text) без дополнительных проверок, это должно сразу действовать как стоп-сигнал без всяких дополнительных намёков.
> Loginov Dmitry © (24.11.08 00:15) [31] > Там конкретный случай дан с MessageBox(). Вроде каких-либо > проблем с "+" замечено не было ))
Там не конкретный пример, там MessageBox приведён только как один из возможных случаев. Опять-таки должен быть рефлекс: флаги объединяются or'ом и никак иначе, даже если в конкретном случае возможен другой вариант. А то потом замучаетесь блох искать при модификации кода через несколько месяцев.
> тимохов (24.11.08 01:20) [36] > вопрос 4. Очень не согласен с тем, что terminatethread является > некорректным способом закрытия потока. он является опасным > и крайней мерой, но это способ, закрывающий поток. опять > же - найдите мне способ прервать ADO запрос в доп. потоке?
То, что другого способа можен не существовать, ещё не говорит, что TerminateThread корректен. Зависшую программу тоже приходится через диспетчер задач прибивать, но никто не называет это корректным завершением процесса.
> Leonid Troyanovsky © (24.11.08 10:43) [42] > Если уж надо расширить пространство ответов до четырех, > то лучше, IMHO, такой вариант: > > 4. Посылает SendMessage окну Application.
Нет, такой ответ туда точно не впишется. Там речь идёт об общей идеологии - кто кого ждёт и кто что делает, а не о конкретном механизме обеспечения этого ожидания.
-
-
Классы, 7 вопрос. Ответил по опыту, что код такой без проблем скомпилится. ОТветил правильно, но это не правильно. :) Нет никакой гарантии что этот код будет правильно работать, в стандарте нигде не написано, что это корректно. Если бы метод был class procedure ShowMsg; - тогда нет вопросов, а так - это прроверка знаний "хаккерских" заморочек, а не знания дельфи. ИМХО
VCL Вопрос номер 1. :) стоит дописать в вопросе наверху: var Form2:TForm2; Потому что иначе можно привести несколько примеров кода, где такое применение будет вполне приемлемым.
Рисование в Кэнвасе. 1 вопрос. Что за ерунда насчет того, что изображение "не стирается"?? Нарисуйте изображение в OnPaint, подвестьте прогу в вечном цикле, проведите сверху другим окном и у вас все сотрется. К томуже, перед вызовом OnPaint дельфя делает немаловажную работу, в частности по вызову BeginPaint, EndPaint. Ответил 2 на этот вопрос, так как вызов BeginPaint EndPaint - вполне можно считать подготовкой, позволяющей отрисовываться быстрее. Например в коде уже не нужно вызывать GetDC для получения DC. Правильный ответ считаю бредовым.
Ну и остальные вопрос - половина вопросов, о смещении рамки квада на пиксель. Это так актуально? :)
-
> Зачем? У программиста должен быть рефлекс на уровне спинного > мозга, что пользователь может ввести всё, что угодно. Если > в коде есть StrToInt(Edit1.Text) без дополнительных проверок, > это должно сразу действовать как стоп-сигнал без всяких > дополнительных намёков.
Так весь код не приведен. Логично проверку делать на OnChange. Соответственно мы можем только гадать, что может, а что не может лежать в TEdit. Кстати, если не ошибаюсь, у свежей дельфи, есть у TEdit свойство, которое позволяет запретить ввод чего угодно кроме чисел.
-
> Григорьев Антон © (23.11.08 16:48)
В первом разделе комментарий:
открытыми массивами. Открытыми массивами являются параметры процедур и функций
Нет такого понятия "открытый массив". Есть "открытый массив параметров".
-
хотя может и ошибаюсь...
-
> Классы, 7 вопрос. > Ответил по опыту, что код такой без проблем скомпилится. > ОТветил правильно, но это не правильно. :) > Нет никакой гарантии что этот код будет правильно работать, > в стандарте нигде не написано, что это корректно. Если > бы метод был class procedure ShowMsg; - тогда нет вопросов, > а так - это прроверка знаний "хаккерских" заморочек, а > не знания дельфи.
Вопрос 7, на мой взгляд как раз полезный. Возможность вызова статических методов без создания экземпляра объекта - основа работы метода TObject.Free(). В пояснении вполне убедительно описано, что Знать об этой особенности языка нужно, хакерского здесь ничего нет. Со стороны все касаемое программирования можно считать хакерством.
-
> Возможность вызова статических методов без создания экземпляра > объекта - основа работы метода TObject.Free().
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end; Какой же тут статический метод вызывается, позвольте узнать ?
-
> blackman © (24.11.08 18:33) [69]
в хедере нету...
-
> blackman © (24.11.08 18:33) [69] > На > http://www.delphikingdom.com/quintana/quintana.asp > <meta http-equiv="Content-Type" content="text/html; charset=utf- > 8"> > видимо есть. > Но на страницах > http://www.delphikingdom.com/quintana/quintana.asp?ItemID=. > .. > chaset отсутствует.
И там и там есть - только что проверил. Вообще, все страницы Королевства генерируются по одному шаблону, и то, что есть на одной странице, есть на всех. Конкретно там прописано следующее: <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=UTF-8"> И почему вы, кстати, не можете посмотреть HTML-код страницы? Мне IE через меню "Вид/Просмотр HTML-кода" всё исправно показывает.
-
> Какой же тут статический метод вызывается, позвольте узнать > ?
TObject.Free
-
> @!!ex © (24.11.08 18:50) [70] > Классы, 7 вопрос. > Ответил по опыту, что код такой без проблем скомпилится. > > ОТветил правильно, но это не правильно. :)
Если код без проблем скомпилировался, значит, ответ правильный. И программист должен это знать - я наблюдал ситуации, когда из-за незнания этой особенности Delphi человек не мог найти ошибку в своём коде.
> стоит дописать в вопросе наверху: > var > Form2:TForm2; > Потому что иначе можно привести несколько примеров кода, > где такое применение будет вполне приемлемым.
Я добавлю в вопрос указание того, что Form2 - это глобальная переменная, автоматически объявленная средой.
> Нарисуйте изображение в OnPaint, подвестьте прогу в вечном > цикле, проведите сверху другим окном и у вас все сотрется. >
Я про половину вопросов могу придумать ситуацию, как извратиться и заставить код работать не так, как он работает в нормальных условиях. Например, про все вопросы группы "VCL" можно сказать: а если это написано не в главной нити, то всё неправильно. Ну и что? Вы хотите, чтобы оговаривалось абсолютно всё? Чтобы, как у юристов, на простейшее действие - 10-страничный договор? Это, что ли, ваш идеал вопросов для теста?
Вы просто неверно понимаете цель этих тестов. Главное в них - не ответить правильно, а понять некоторые особенности работы Delphi, которые описаны в комментарии. Сам вопрос - это средство сделать изучение этих особенностей более интересным. И тест надо оценивать с этих позиций. Ну не знают многие новички, зачем нужен OnPaint, если они рисуют где попало, и всё рисуется! Если можете, придумайте на эту тему такой вопрос, чтобы он был понятен такому человеку, но с более точными формулировками, и я с удовольствием размещу его вместо нынешнего.
> Ну и остальные вопрос - половина вопросов, о смещении рамки > квада на пиксель. Это так актуально? :)
Во-первых, не половина, а всего два вопроса. Даже если к ним прибавить вопрос про нехватку пикселя при рисовании прямой - три вопроса. Из 12-ти. До половины ещё трёх вопросов не хватает. Во-вторых, лично для меня это было актуально, когда я работал с графикой. В-третьих, если вы знаете более актуальные вопросы, я готов выслушать вас. Критики хватает, а конкретную идею для нового вопроса пока один только Ins предложил.
> Логично проверку делать на OnChange. Соответственно мы можем > только гадать, что может, а что не может лежать в TEdit. > Кстати, если не ошибаюсь, у свежей дельфи, есть у TEdit > свойство, которое позволяет запретить ввод чего угодно кроме > чисел.
И что всё это доказывает? Да пусть там разрешено вводить одни только цифры - пользователь введёт "2137561094856109285612374", и будет исключение. А даже если стоит проверка где-то в другом месте - ну и что? На суть вопроса это не влияет, потому что использование try..finally для гарантированного удаления объекта - это как, извините, не писать мимо унитаза. Нормальный программист должен делать это независимо от того, есть ли вызов StrToInt или нет. А то потом при модификации кода можно получить кучу ошибок там, где всё, вроде бы, уже отлажено. А StrToInt(Edit1.Text) в данном вопросе - просто необязательный намёк, квалифицированному программисту и без него отсутствие try..finally должно глаз резать.
|