Конференция "Прочее" » Тесты на знание Delphi
 
  • Германн © (24.11.08 16:25) [60]

    > Не угадали, здесь нет никакой связи.

    Значит не угадал. Но "случайным" такое совпадение вряд ли можно назвать. Этому есть и объективные причины.
  • Ins © (24.11.08 16:31) [61]

    > Значит не угадал.


    А это потому, что там редко бываете :-Ь
  • Германн © (24.11.08 16:36) [62]

    > Ins ©   (24.11.08 16:31) [61]

    :)
  • Григорьев Антон © (24.11.08 16:40) [63]

    > clickmaker ©   (24.11.08 16:23) [59]
    > если по сабжу, то меня просто наповал убил этот вариант
    > ответа :)
    > "OnPaint вызывается во время обратного хода луча развёртки
    > монитора, чтобы исключить мерцание"

    Самое смешное, что это списано почти с натуры :) Задавал у нас один человек такой вопрос - как синхронизировать вывод графики с обратным ходом луча развёртки, а его анимация мерцает. Несколько дней его совместными усилиями убеждали, что мерцание не из-за этого - так и не поверил :)
  • Rouse_ © (24.11.08 16:44) [64]
    А надо было просто у него уточнить с какой частотой бегает лучик на не ЭЛТ мониторах :)
  • анонимъ (24.11.08 16:47) [65]
    > clickmaker ©   (24.11.08 16:23) [59]

    а меня убил ответ "Нарисованное в OnPaint не стирается после перекрытия формы другими окнами". особенно убило то, что он "правильный".
  • clickmaker © (24.11.08 16:48) [66]
    > Нарисованное в OnPaint не стирается после перекрытия формы
    > другими окнами

    ну да. Что написано пером, то не вырубишь топором )
  • Григорьев Антон © (24.11.08 16:56) [67]

    > анонимъ   (24.11.08 16:47) [65]
    > а меня убил ответ "Нарисованное в OnPaint не стирается после
    > перекрытия формы другими окнами". особенно убило то, что
    > он "правильный".

    На том понятийном уровне, который доступен людям, на которых ориентирован этот вопрос, он правильный. Потому что каждый видит: рисуем где хотим, перекрываем другим окном - рисунка нет. Рисуем в OnPaint - рисунок после перекрытия сохраняется. А то, что на самом деле он стёрся, но тут же перерисовался, объясняется в комментарии.

    Вы, наверное, в школе тоже считать учились, складывая яблоки с конфетками. И это несмотря на то, что в математике и понятие числа, и понятие операции сложения вводятся совсем по-другому. Просто начинать сразу со сложного тоже нельзя.
  • Григорьев Антон © (24.11.08 17:27) [68]
    Для начала отвечу на то, с чем сразу точно не согласен

    > 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.

    Нет, такой ответ туда точно не впишется. Там речь идёт об общей идеологии - кто кого ждёт и кто что делает, а не о конкретном механизме обеспечения этого ожидания.
  • 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 отсутствует.
    как-то это не хорошо. Тестируем знания, а сами не тестируем то, что выкладываем
  • @!!ex © (24.11.08 18:50) [70]
    Классы, 7 вопрос.
    Ответил по опыту, что код такой без проблем скомпилится.
    ОТветил правильно, но это не правильно. :)
    Нет никакой гарантии что этот код будет правильно работать, в стандарте нигде не написано, что это корректно. Если бы метод был class procedure ShowMsg; - тогда нет вопросов, а так - это прроверка знаний "хаккерских" заморочек, а не знания дельфи.
    ИМХО

    VCL
    Вопрос номер 1. :)
    стоит дописать в вопросе наверху:
    var
     Form2:TForm2;
    Потому что иначе можно привести несколько примеров кода, где такое применение будет вполне приемлемым.

    Рисование в Кэнвасе.
    1 вопрос.
    Что за ерунда насчет того, что изображение "не стирается"?? Нарисуйте изображение в OnPaint, подвестьте прогу в вечном цикле, проведите сверху другим окном и у вас все сотрется. К томуже, перед вызовом OnPaint дельфя делает немаловажную работу, в частности по вызову BeginPaint, EndPaint.
    Ответил 2 на этот вопрос, так как вызов BeginPaint EndPaint - вполне можно считать подготовкой, позволяющей отрисовываться быстрее. Например в коде уже не нужно вызывать GetDC для получения DC.
    Правильный ответ считаю бредовым.

    Ну и остальные вопрос - половина вопросов, о смещении рамки квада на пиксель. Это так актуально? :)
  • @!!ex © (24.11.08 18:52) [71]
    > Зачем? У программиста должен быть рефлекс на уровне спинного
    > мозга, что пользователь может ввести всё, что угодно. Если
    > в коде есть StrToInt(Edit1.Text) без дополнительных проверок,
    > это должно сразу действовать как стоп-сигнал без всяких
    > дополнительных намёков.

    Так весь код не приведен. Логично проверку делать на OnChange. Соответственно мы можем только гадать, что может, а что не может лежать в TEdit. Кстати, если не ошибаюсь, у свежей дельфи, есть у TEdit свойство, которое позволяет запретить ввод чего угодно кроме чисел.
  • Тын-Дын © (24.11.08 19:07) [72]

    > Григорьев Антон ©   (23.11.08 16:48)  

    В первом разделе комментарий:

    открытыми массивами. Открытыми массивами являются параметры процедур и функций

    Нет такого понятия "открытый массив". Есть "открытый массив параметров".
  • Тын-Дын © (24.11.08 19:10) [73]
    хотя может и ошибаюсь...
  • Loginov Dmitry © (24.11.08 20:26) [74]
    > Классы, 7 вопрос.
    > Ответил по опыту, что код такой без проблем скомпилится.
    > ОТветил правильно, но это не правильно. :)
    > Нет никакой гарантии что этот код будет правильно работать,
    > в стандарте нигде не написано, что это корректно. Если
    > бы метод был class procedure ShowMsg; - тогда нет вопросов,
    > а так - это прроверка знаний "хаккерских" заморочек, а
    > не знания дельфи.


    Вопрос 7, на мой взгляд как раз полезный. Возможность вызова статических методов без создания экземпляра объекта - основа работы метода TObject.Free(). В пояснении вполне убедительно описано, что Знать об этой особенности языка нужно, хакерского здесь ничего нет. Со стороны все касаемое программирования можно считать хакерством.
  • Игорь Шевченко © (24.11.08 20:31) [75]

    > Возможность вызова статических методов без создания экземпляра
    > объекта - основа работы метода TObject.Free().


    procedure TObject.Free;
    begin
     if Self <> nil then
       Destroy;
    end;



    Какой же тут статический метод вызывается, позвольте узнать ?
  • antonn © (24.11.08 21:09) [76]

    > blackman ©   (24.11.08 18:33) [69]

    в хедере нету...
  • Григорьев Антон © (24.11.08 21:16) [77]

    > 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-кода" всё исправно показывает.
  • ага (24.11.08 21:17) [78]

    > Какой же тут статический метод вызывается, позвольте узнать
    > ?

    TObject.Free
  • Григорьев Антон © (24.11.08 21:39) [79]

    > @!!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 должно глаз резать.
 
Конференция "Прочее" » Тесты на знание Delphi
Есть новые Нет новых   [134447   +40][b:0.001][p:0.001]