Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.25;
Скачать: CL | DM;

Вниз

Тесты на знание Delphi   Найти похожие ветки 

 
antonn ©   (2008-11-24 22:29) [80]


> Григорьев Антон ©   (24.11.08 21:16) [77]

скорее всего там дело не в теге, а в хедере (заголовке страницы. "Content-Type: text/html", а ИЕ возможно хочет "Content-Type: text/html; charset=utf-8")


 
antonn ©   (2008-11-24 22:38) [81]

попробывал тест на ГДИ, 7 из 12 правильно, больше половины всяких способов вижу впервые, тыкал наугад :)


 
Leonid Troyanovsky ©   (2008-11-24 23:00) [82]


> Григорьев Антон ©   (24.11.08 17:27) [68]

> > 4. Посылает SendMessage окну Application.

> Нет, такой ответ туда точно не впишется. Там речь идёт об
> общей идеологии - кто кого ждёт и кто что делает, а не о
> конкретном механизме обеспечения этого ожидания.

Тогда, исключить 4 статью на.
Нужны ли антинаучные эскапады.

--
Regards, LVT.


 
тимохов   (2008-11-24 23:03) [83]

2Антон

Хоть убей - не соглашусь, что нужно считать корректным вопрос про некорректность TerminateThread. Его нужно задавать иначе - например, так, чтобы раскрылось знание отвечающего какие последствия будут у terminatethread. В MSDN есть список последствий. Вот на него и можно проэкзаменовать. А корректность - термин расплывчатый.


 
Leonid Troyanovsky ©   (2008-11-24 23:14) [84]


> Leonid Troyanovsky ©   (24.11.08 23:00) [82]

Кста, при выборе 4 ответа на вопрос 3
http://www.delphikingdom.com/quintana/quintana.asp?ItemID=14
комментарий не доступен.
Видимо, предполагалось, что начало - 1 вопрос/ответ.

Ну, а вообще - весьма полезное начало, спасибо.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-11-24 23:22) [85]


> Leonid Troyanovsky ©   (24.11.08 23:14) [84]

> Видимо, предполагалось, что начало - 1 вопрос/ответ.

А, я понял, нужно пометить все, sorry.

Ну, ничего-ничего, такое тоже имеет место быть.

--
Regards, LVT.


 
@!!ex ©   (2008-11-25 00:09) [86]

Написал кучу комментариев.. удалил все. Оставлю только один, который на мой взгляд единственный, действительно бредовый. :)
Не с целью поспорить, просто вижу косяки на мой взгляд, и пользуюсь для того, чтобы улучшить качество тестов и поднять свой уровень.

> Я про половину вопросов могу придумать ситуацию, как извратиться
> и заставить код работать не так, как он работает в нормальных
> условиях. Например, про все вопросы группы "VCL" можно сказать:
> а если это написано не в главной нити, то всё неправильно.
> Ну и что? Вы хотите, чтобы оговаривалось абсолютно всё?
> Чтобы, как у юристов, на простейшее действие - 10-страничный
> договор? Это, что ли, ваш идеал вопросов для теста?
>
> Вы просто неверно понимаете цель этих тестов. Главное в
> них - не ответить правильно, а понять некоторые особенности
> работы Delphi, которые описаны в комментарии. Сам вопрос
> - это средство сделать изучение этих особенностей более
> интересным. И тест надо оценивать с этих позиций. Ну не
> знают многие новички, зачем нужен OnPaint, если они рисуют
> где попало, и всё рисуется! Если можете, придумайте на эту
> тему такой вопрос, чтобы он был понятен такому человеку,
> но с более точными формулировками, и я с удовольствием
> размещу его вместо нынешнего.

Да нет. Просто формулировка о том, что нарисованное "не стирается" - откровенный бред. "не стирается" и "перерисовывается" - абсолютно не синонимы. Об этом собственно и говорю. У юристов, между прочим количество текста такое, чтобы избежать двусмысленности. Если часть юридического текста можно трактовать двусмысленно, и это пропустил ответственный юрист, такой юрист идет нафиг.


 
Германн ©   (2008-11-25 01:54) [87]


> Если часть юридического текста можно трактовать двусмысленно,
>  и это пропустил ответственный юрист, такой юрист идет нафиг.
>
>

Вот только не надо переводить "наши термины" на другой язык!


 
{RASkov} ©   (2008-11-25 09:32) [88]

> [86] @!!ex ©   (25.11.08 00:09)
> Написал кучу комментариев.. удалил все. Оставлю только один

Ты лучше свой тест напиши :)


 
сюжетнаялиния   (2008-11-25 09:37) [89]

ух ты, я оказывается Дэлфи знаю - 13 из 13 )))


 
data ©   (2008-11-25 09:43) [90]

тряхнула стариной, протестировалась. По графике половину только ответила, в каком-то вопросе тип Cardinal проглядела, остальное вроде ок, получается, что не забыла еще:).
Хороший тест.


 
@!!ex ©   (2008-11-25 10:03) [91]

> Ты лучше свой тест напиши :)

А смысл?
Тем более мой уровень не достаточен для того, чтобы написать адекватный тест.
Чукча не писатель.


 
Ping-Pong   (2008-11-25 14:09) [92]

Вопрос №2
В программе объявлена переменная A типа TSomeClass (некоторый класс). Что нужно сделать, чтобы создать экземпляр этого класса?

1. Больше ничего, экземпляр уже существует, т.к. переменная A объявлена
2. A.Create;
3. A := TSomeClass.Create;
4. New(A, Create);


При проверке говорят, мол, правильньій вариант - 3. А я считаю, что 2. Вопрос - о создании єкземпляра класса; о переменной А в вопросе ничего нет. Переменная А фигурирует в условии, но зачем - совершенно непонятно.

Что-то типа: У Васи есть три яблока. Сколько будет 2 х 2 = ?


 
Rouse_ ©   (2008-11-25 14:59) [93]


> При проверке говорят, мол, правильньій вариант - 3. А я считаю, что 2

Хорошо когда есть собственное мнение :) А где во втором варианте создание экземпляра класса, раз уж о нем шла речь в вопросе? :)


 
Сергей М. ©   (2008-11-25 15:47) [94]


> Ping-Pong   (25.11.08 14:09) [92]


> А я считаю, что 2


2-й ответ верен условно, в то время как 3-й верен безусловно.


 
Юрий Зотов ©   (2008-11-25 15:53) [95]

> Ping-Pong   (25.11.08 14:09) [92]

При вызове конструктора, как обычного метода (т.е., НЕ через ссылку не класс) новый экземпляр класса НЕ создается.

А в вопросе речь идет как раз о создании экзмляра класса,  поэтому вариант 2 - ошибочный, а вариант 3 - правильный.


 
Юрий Зотов ©   (2008-11-25 15:56) [96]

> Сергей М. ©   (25.11.08 15:47) [94]

Согласно формулировке вопроса, переменая А - это ссылка на объект, а не на класс. Поэтому я не нашел условий, при которых ответ 2 был бы верен.


 
Сергей М. ©   (2008-11-25 16:02) [97]


> Юрий Зотов ©   (25.11.08 15:56) [96]


> я не нашел условий, при которых ответ 2 был бы верен


type
 TMyObjectClass = class(TObject)
   ..
 end;

 TSomeClass = class of TMyObjectClass;

var
 A: TSomeClass;

..
 
 A.Create;


 
Сергей М. ©   (2008-11-25 16:07) [98]


> Юрий Зотов ©   (25.11.08 15:56) [96]
> Согласно формулировке вопроса, переменая А - это ссылка
> на объект, а не на класс


Под "некоторым классом" ведь можно понимать и декларацию вида class of .. и декларацию вида class(..)


 
blackman ©   (2008-11-25 16:19) [99]

Григорьев Антон ©   (24.11.08 21:16) [77]
Посмотрел еще раз в Opera и CHrome все нормально и видно исходник. Видимо это глюки IE7.


 
Ins ©   (2008-11-25 16:35) [100]


> Под "некоторым классом" ведь можно понимать и декларацию
> вида class of .. и декларацию вида class(..)


Едва ли по-русски первую можно так назвать. Типом классовой ссылки или метаклассом, но не просто "некоторым классом"... Другое дело, что про идентификатор типа TSomeClass, если провести аналогию с TObject/TClass, TPersistent/TPersistentClass можно подумать, что это классовая ссылка. Ну, можно назвать идентификатор TSomeObject, или как модно TBar/TFoo. Но все  эти придирки ИМХО притянуты за уши, особенно учитывая тот факт, что тесты эти для себя и нигде их результаты не фиксируются. Ну, если вдруг кто-то ответит 2 из соображений, что TSomeClass - это метакласс, то пусть считает, что ответил правильно :) Я вот тоже на один вопрос формально промахнулся (про ShowMessage в статическом методе несозданного экземпляра), но неформально себе правильный ответ засчитал :-D


 
Сергей М. ©   (2008-11-25 16:40) [101]


> Юрий Зотов ©   (25.11.08 15:56) [96]


Т.е. 3-й ответ будет единственно и безусловно верным при условии, что вопрос будет звучать так:

Что нужно сделать, чтобы создать экземпляр этого класса, если на момент создания переменная А не инциализирована ?


 
Сергей М. ©   (2008-11-25 16:47) [102]


> Ins ©   (25.11.08 16:35) [100]


> Едва ли по-русски первую можно так назвать


А даже если так, то все равно в вопросе должно быть явно оговорено, что A на момент создания экз-ра не содержит корректной ссылки на ранее созданный объект.

Иначе ответы 2 и 3 будут верными.


 
Ins ©   (2008-11-25 17:02) [103]


> Что нужно сделать, чтобы создать экземпляр этого класса,
>  если на момент создания переменная А не инциализирована
> ?


А что значит "не инициализирована"? Имеет неопределенное значение (или nil)? Если да, то как значение этой переменной до вызова влияет на то, как нужно создавать экземпляр класса?
Или под этим понимается тот факт, что не был осуществлен вызов A := TSomeClass.NewInstance; Так в этом случае второй вариант тоже не подходит, так как вызов Create в данном случае не создает экземпляр класса.

Можно было бы сформулировать так: Что нужно сделать, чтобы создать новый экземпляр этого класса, доступный через переменную A.


 
Ins ©   (2008-11-25 17:05) [104]


> А даже если так, то все равно в вопросе должно быть явно
> оговорено, что A на момент создания экз-ра не содержит корректной
> ссылки на ранее созданный объект.
>
> Иначе ответы 2 и 3 будут верными.


Э - нет. :) Читаь постом выше или пост Юрия Зотова под номером 95


 
Сергей М. ©   (2008-11-25 17:12) [105]


> что значит "не инициализирована"?


Имеется ввиду явно не инициализирована корректной ссылкой на заведомо существующий (где-то ранее созданный) объект класса TSomeClass.

Иными словами,

A := TSomeClass.Create; // если подобная строка фигурирует где-то ранее по ходу выполнения программы
..
A.Create; // то эта демонстрирует верность ответа №2, поскольку эвивалентна строке TSomeClass.Create


 
Ins ©   (2008-11-25 17:15) [106]


> то эта демонстрирует верность ответа №2, поскольку эвивалентна
> строке TSomeClass.Create


Не, не демонстрирует ;-) Это просто инициализация созданного ранее экземпляра, но никак не создание


 
Сергей М. ©   (2008-11-25 17:16) [107]


> Ins ©   (25.11.08 17:05) [104]


Условия только декларации переменной для выбора однозначно верного ответа, imho, недостаточно.

Нигде в условиях не сказано, что творилось с этой переменной до вызова A.Create, значит имею полное право предположить, что переменная была ранее инициализирована корректным значением.

Что не запрещено, то разрешено)


 
Rouse_ ©   (2008-11-25 17:17) [108]


>
> type
>  TMyObjectClass = class(TObject)
>    ..
>  end;
>
>  TSomeClass = class of TMyObjectClass;
>
> var
>  A: TSomeClass;
>
> ..
>  
>  A.Create;

Работает? :)


 
Сергей М. ©   (2008-11-25 17:19) [109]


> Это просто инициализация созданного ранее экземпляра


Логично)

[102] снимаю.


 
Григорьев Антон ©   (2008-11-25 17:20) [110]

У конструктора
> Сергей М. ©   (25.11.08 16:47) [102]
> А даже если так, то все равно в вопросе должно быть явно
> оговорено, что A на момент создания экз-ра не содержит корректной
> ссылки на ранее созданный объект.
>
> Иначе ответы 2 и 3 будут верными.

У конструктора два неявных параметра - Self и ещё один булевский параметр, который показывает, вызывается ли конструктор как классовый метод или как обычный метод.

В пролог конструктора вставляется код, который анализирует этот параметр. Если конструктор вызывается как классовый метод, то из пролога вызывается NewInstance, который создаёт новый экземпляр класса. Указатель на этот экземпляр помещается в Self, перетирая ссылку на класс, которая была там при вызове. Именно поэтому с самого начала Self в конструкторе содержит ссылку на объект, хотя изначально это была ссылка на класс.

Если конструктор вызывается как обычный метод (т.е. Self изначально содержит ссылку на объект, а не на класс), пролог не делает ничего дополнительного, и конструктор отрабатывает так же, как обычная процедура. Сделано это для того, чтобы из конструктора можно было вызывать унаследованный конструктор, и это не приводило бы к повторному вызову NewInstance.

Таким образом, если A - это ссылка на объект, A.Create ни при каких условиях не создаст новый экземпляр объекта, так как такой вызов будет интерпретирован компилятором как вызов конструктора в качестве обычного, а не классового метода.

Но вообще, впечатление такое, как будто некоторые люди здесь устроили конкурс на самое извращённое толкование вопросов теста :)


 
Сергей М. ©   (2008-11-25 17:21) [111]


> Rouse_ ©   (25.11.08 17:17) [108]


А куда оно денется, если перед A.Create выполнить, скажем,

A := TSomeClass(TMyObjectClass.Create.ClassType);


 
Rouse_ ©   (2008-11-25 17:22) [112]


> А куда оно денется, если перед A.Create выполнить, скажем,
>
>
> A := TSomeClass(TMyObjectClass.Create.ClassType);

Ну вот про это в условии точно ничего небыло :)))


 
Сергей М. ©   (2008-11-25 17:23) [113]


> Григорьев Антон ©   (25.11.08 17:20) [110]


[102] снимается с рассмотрения)

А что скажешь по поводу [4] ?


 
Сергей М. ©   (2008-11-25 17:24) [114]


> Rouse_ ©   (25.11.08 17:22) [112]


> про это в условии точно ничего небыло


А там ничего не было кроме "объявлена переменная типа типа")
Потому и возникает неоднозначность.


 
Ins ©   (2008-11-25 17:25) [115]


> Нигде в условиях не сказано, что творилось с этой переменной
> до вызова A.Create, значит имею полное право предположить,
>  что переменная была ранее инициализирована корректным значением.
>


А это уже софистика, не нужно доводить до абсурда :) Потому что с другой стороны, если в тексте вопроса что-то не оговорено, значит и выдумывать ничего лишнего не нужно. Все, что нужно для ответа, есть в тексте вопроса. Не согласны? ;-)

ЗЫ: И все равно, даже если пуститься в подобное словоблудие, то вызов Create как instance-метода никаким образом нельзя назвать "созданием экземпляра" ;-)


 
Ins ©   (2008-11-25 17:27) [116]


> Логично)
>
> [102] снимаю.


Принято. 115 писал раньше, чем увидел этот пост. Так что тоже снимается :)


 
Ins ©   (2008-11-25 18:19) [117]


> Работает? :)


Работает, даже ничего не нужно дописывать до вызова A.Create. И даже в соответствии  условием создает новый экземпляр (правда тебе ссылку на него не возвращает), но см. [100] ;-)


 
Григорьев Антон ©   (2008-11-25 18:31) [118]


> Сергей М. ©   (25.11.08 17:23) [113]
>
> > Григорьев Антон ©   (25.11.08 17:20) [110]
> А что скажешь по поводу [4] ?

Решил, что надо сделать общий комментарий к теме, и в теме про DLL написать, что все вопросы здесь относятся к случаю, когда нет Build with run-time packages. А про пакеты, возможно, будет отдельная тема. Такой комментарий немедленно вставить не могу, для этого нужна модификация движка Квинтаны.


 
Сергей М. ©   (2008-11-25 19:13) [119]


> Ins ©   (25.11.08 17:25) [115]


> Не согласны?


Не-а..

Т.е. угу, не согласен.

Батоношлепство в Делфи (со всеми вытекающими, что собссно и наблюдаем) цветет махровым цветом именно по той причине, что авторы такого рода "знаний" (хоть в форме тестов, хоть еще как-либо) не удосуживаются сформулировать вопросы-ответы, исключающие неоднозначность.


 
Rouse_ ©   (2008-11-25 20:04) [120]


> Ins ©   (25.11.08 18:19) [117]
> Работает, даже ничего не нужно дописывать до вызова A.Create.

Верю, у меня тож акромя АВ ничего не выдает в таком варианте, как был приведен :)



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2009.01.25;
Скачать: CL | DM;

Наверх




Память: 0.71 MB
Время: 0.023 c
2-1228893500
Mefis
2008-12-10 10:18
2009.01.25
Как информацию с формы переместить в ячейку таблицы.


15-1227789933
Труп Васи Доброго
2008-11-27 15:45
2009.01.25
Помогите с комбинаторикой


2-1229085959
Pavel
2008-12-12 15:45
2009.01.25
Работа с STream


2-1228993138
cvg
2008-12-11 13:58
2009.01.25
Как сделать строчку или символ в memo жирным?


15-1227448089
Григорьев Антон
2008-11-23 16:48
2009.01.25
Тесты на знание Delphi