Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Страждущий   (2003-03-20 22:58) [0]

Уважаемые мастера ! Нужна ваша помощь - протестируйте мои знания, пожалуйста !

Дело в том, что очень хочу работать программистом, мне это ужасно нравится... но нету никакого опыта работы в комманде, я абсолютно не представляю свой уровень знаний по сравнению с другими. Я жутко стесняюсь что ли... устраиваться куда-нибудь программистом...а что, если мои знания - полная лажа ? Просьба ко всем, кто работает программистом, а особенно отвечает за прием новичков. Все места где я узнавад мне говорили... ну что, мол, молодых специалистов они уже набрали, им нужны опытные люди.
Я вообще хотел узнать, требуются ли фирмам свежие люди, которые не очень сильын в своей обасти, но которые полны желания научиться и творить ? Мне даже не очень важна зарплата, мне просто хочется посмотреть и, как говорится, себя показать. Я писал приложения для работы с сетями (TCP/IP большей частью), работал немного с базами (в большинстве случаев с локальными).

Может, вы зададите какие то вопросы, чтобы понять мой уровень - я могу отвечать прямо в этой ветке... или написать минимальные требования, которые предъявляют у вас к начинающим, чтобы их хотя бы взяли в штат

Мне это очень важно, поверьте

Заранее спасибо


 
Юрий Зотов   (2003-03-21 09:19) [1]

Думаю, зря Вы боитесь. К сожалению, уровень рядовых программистов (во всяком случае там, где мне довелось работать) довольно-таки невысок. Так что вряд ли Вы не сможете выдержать такого сравнения.

Ну а если уж очень хочется, давайте попробуем.

Уговор - на все вопросы отвечать без машины, книг и справки. Можно пользоваться лишь бумагой и ручкой. Если не помните наизусть количество параметров в функциях, их тип и порядок следования - это неважно, достаточно указать лишь схему вызова - например, так: MyFunc(MyParam1, ..., MyParam2). Ответы нужны короткие, но точные - то есть, лишь самая суть в одной-двух фразах. Общее время на все - примерно час.

И еще - имейте в виду, что большинство приводимых ниже вопросов, IMHO, в общем-то, выше уровня среднего прикладного программиста. Так что, если на что-то не ответите, то это вовсе не повод не для расстройства (зато повод для чтения книг). Думаю, если ответите на половину, то это уже будет очень даже неплохо. А если на все - то Ваш уровень явно выше среднего.

Вопрос 1 (на знание основ и платформы).
Чему будет равно W после выполнения следующего кода процессором x86? Ответ объяснить.

type
PWord = ^word;
var
I: integer;
W: word;
begin
I := High(I) shr 8;
W := PWord(Integer(@I) + 2)^;
end;

Вопрос 2 (на знание языка, общее умение программировать и грамотность стиля).
а). Что такое открытые массивы и их конструкторы?
б). Напишите пример перегрузки процедуры.
в). Написать процедуру поиска в заданном каталоге и всех его подкаталогах всех файлов по маске A?.B* (контрольное время - 20 минут).
г). В чем недостаток такого кода:
try
Obj := TMyObject.Create;
...
finally
Obj.Free;
end;

Вопрос 3 (на знание и понимание VCL).
а). Что такое Custom-класс, абстрактный метод, классовый метод?
б). В чем главное отличие TLabel от TStaticText?
в). От какого класса наследуется TCollection и почему.
г). У каких компонентов есть событие OnCreate? Почему его нет у других компонентов?
д). Написать модуль, содержащий класс, который позволяет создать лишь один свой экземпляр (контрольное время - 10 минут).

Вопрос 4 (на знание Win32 и ее API).
а). Что такое объекты ядра? Перечислите несколько функций, в которых они используются.
б). Приводят ли вызовы функций LoadLibrary/FreeLibrary к загрузке DLL в ОЗУ?
в). Написать стандартный код цикла выборки сообщений (контрольное время - 2 минуты).
г). Чем отличаются функции SendMessage, PostMessage и PosrThreadMessage?
д). Каково назначение функций GetStockObject и SelectObject?





 
Игорь Шевченко   (2003-03-21 09:39) [2]

www.brainbench.com - бесплатные тесты по Delphi. (По Delphi 3, если не ошибаюсь, но для начального тестирования пригодится)


 
REA   (2003-03-21 10:24) [3]

2ЮЗотов - кстати неплохой тестик получился. Надо бы еще вопросиков 1000 добавить, автоматизировать и выложить. Будет BrainBench.ru - полезный ресурс для работодателей и работовзятелей.


 
stone   (2003-03-21 10:31) [4]

2 Юрий Зотов © (21.03.03 09:19

> Уговор - на все вопросы отвечать без машины, книг и справки.
>


Оригинально. Это типа ходячая энциклопедия? Я еще ни разу не встречал человека, который знает все. Не в смысле именно эти вопросы, могли быть и другие.
Есть такая пословица: дурак уверен, сто знает все, а умный в этом сомневается. Не воспринимайте это как личное.


 
Vint   (2003-03-21 10:38) [5]

Ув. Юрий Зотов © (21.03.03 09:19) и REA © (21.03.03 10:24)

не надо такой ресурс :) а то хотелось бы по вопросам что бы и зарплата была соизмеримая, а это будет вряд ли ;)


 
alxx   (2003-03-21 10:40) [6]

в). Написать процедуру поиска в заданном каталоге и всех его подкаталогах всех файлов по маске A?.B* (контрольное время - 20 минут).

Где-то читал, что 9 из 10 программистов (кажется, работавших программистами ранее), устраивающихся на работу не справлялись с таким заданием.


 
Romkin   (2003-03-21 10:43) [7]

Класс!!! Я засыпался на нескольких пунктах :-)))


 
alxx   (2003-03-21 10:44) [8]

Кстати, отгадки будут?


 
Anatoly Podgoretsky   (2003-03-21 10:59) [9]

alxx © (21.03.03 10:40)
Потому что они путают понятия каталог и файл и пытаются применить маску файла к каталогам, то есть применяют FindFirst("A?.B*" и к каталогам.


 
Mike_Goblin   (2003-03-21 11:04) [10]

1. Честно признаю - ошибся при сдвиге на 1 бит
2.
а) Массивы передаваемые в качестве параметра метода без указания их размера. Размер передается как скрытый параметр
б) перевод на русский язык термина перегрузка имеет как правило два значения override и overload. Какой имелся ввиду?
в) Этюд на тему рекурсии, MatchesMask, FindFirst, FindNext
г) при возникновении исключительной ситуации в конструкторе экземпляр объекта не создается, при этом метод Free - освобождающий память экземпляра будет все равно вызван
3.
а)CustomClass - класс реализующий функциональность, но не выставляющий ее (чаще всего свойства) в секцию published. Потомки выставляют в published нужные им свойства. Наличие их связано с невозможностью уменьшить видимость члена класса. Абстрактный метод - метод без реализации (см ключ слово abstract). Классовый метод - может быть вызван без создания экземпляра класса
б. Лазил в Help, тк не помню особенностей TStaticText - он оказывается оконный, т.е может получать фокус и быть контейнером других компонентов
в. TPersistent. Метод Assign
г. Опять смотрел Help. тк давно не работал. Методы GDI, кстати к VCL они не относятся - это из API
д. В implementation секции - глобальную переменные Instance:TObject и RefCount, переопределить методы NewInstance и FreeInstance.
procedure TSingleton.FreeInstance;
begin
Dec( Ref_Count );
if ( Ref_Count = 0 ) then
begin
Instance := nil;
inherited FreeInstance;
end;
end;

class function TSingleton.NewInstance: TObject;
begin
if ( not Assigned( Instance ) ) then
Instance := inherited NewInstance;
Result := Instance
Inc( Ref_Count );
end;


 
Игорь Шевченко   (2003-03-21 11:08) [11]

Юрий Зотов © (21.03.03 09:19)

Можно использовать вопросы (с сохранением авторства) ? :-)))))
Хорошая подборка получилась


 
REA   (2003-03-21 11:11) [12]

>д). Написать модуль, содержащий класс, который позволяет создать лишь один свой экземпляр (контрольное время - 10 минут).

Я честно говоря по глупости своей подумал, что просто надо вызвать Exception, если один экземпляр уже есть... Надо переформулировать вопрос.


 
Ihor Osov'yak   (2003-03-21 11:17) [13]

2 Romkin © (21.03.03 10:43)

Да, согласен..

О себе:

2г - не уверен в правильности обьяснения (моего). С разрешения Зотова могу запостить сюда..

3в. Не помню. Стыдно, но факт.
3г. Аналогично - не помню. Но есть простое обьяснение - всегда перекрываю AfterConstruction и никогда не использую OnCreate(там, где оно есть). Почему - могу обьяснить.
4д. Не знаю. Не приходилось использовать. Сейчас возьму учебник, посмотрю...

То ЮЗ - нескромный вопрос - Я то себя считал проффесионалом уровня выше среднего.. Не слышком ли завышенна оценка?


 
Ihor Osov'yak   (2003-03-21 11:26) [14]

Ну раз Mike_Goblin © (21.03.03 11:04)спич держал, то я скажу и по 2 г - тем более, что я сним не совсем согласен.

При исключении в конструкторе - деструктор візван будет автоматически. Это так. Но
finally
Obj.Free;
end;

имеет потенциальную проблему - не потому, что деструктор будет вызван второй раз - этого может и не быть, если до вызова конструктора Obj был установлен в nil (free проверяет условие отличия от nil). Проблема будет тогда, когда в конструкторе возникнет исключение, а obj до вызова конструктора имел какое-то "мусорное" значение. То есть, должно быть так:


obj := nil;
try
Obj := TMyObject.Create;
...
finally
Obj.Free;
end;

Зы - я конечно понимаю, что глобальные переменные и поля класса изначально установлены в nil, но я рассматривал вопрос в общем случае...



 
han_malign   (2003-03-21 11:28) [15]

1. Честно признаю - ошибся при сдвиге на 1 бит
2.
.........
г) при возникновении исключительной ситуации в конструкторе экземпляр объекта не создается, при этом метод Free - освобождающий память экземпляра будет все равно вызван

- по первому пунскту часто ошибаются, я сам, пока на битовых потоках собыку не съел, путался в индексах и сдвигах...
- а вот г) в реализации D5 вполне корректен, потому как если посмотреть System.pas при возникновении исключительной ситуации в EAX в конце концов попадает nil, а Free свою очередь проверяет Instance<>nil
(см. - System.Pas: _FreeMem; TObject.FreeInstance; _ClassCreate; _ClassDestroy; TObject.Free;)


 
Игорь Шевченко   (2003-03-21 11:30) [16]

Я, честно говоря, смотрел по исходникам только на то, от какого класса TCollection наследуется. Не работаю я с TCollection плотно и упорно, не прижился. :-))
Еще раз, хорошая подборка.
Если есть еще интересные вопросы, есть предложение собрать :-))


 
Mike_Goblin   (2003-03-21 11:41) [17]

Сори п 3 г попутал с 4д
OnCreate - есть у потомков TCustomForm. В ранних версиях вызывалось из конструктора класса, сейчас из AfterConstruction. Нужно чтобы не переопределять конструктор при визуальном наследовании.

4
а) Внутренние объекты ядра Windows, ну например кисти рисования, Handles. См TCanvas
б) Надо читать MSDN, мне кажется, если DLL не загружена в память другими процессами - то вызов LoadLibrary загрузит ее туда.
д) уже написал. Коротко все тоже - не держите в голове всю справочную систему
в) что-то похожее на (я только не могу понять зачем)
while true do
begin
PeekMessage....
end;
г Чем отличаются функции SendMessage, PostMessage и PostThreadMessage? Опять же прочесть справку, я не держу в это голове



 
REA   (2003-03-21 11:45) [18]

В свое время для отбора кандидатов на работу я давал тест на профпригодность. Он конечно не того уровня, но может иногда пригодиться.
Что такое Int21h?
Что такое IRQ3?
Что такое DMA?
Что такое EMS, UMB, XMS?
Что такое LBA?
Что такое IPX?
Что такое CMOS?
Что такое PCI, PCMCIA?
Что такое PCAD?
Что такое FIDO?
Что такое IDE?
Что такое FAT, HPFS, NTFS…?
Что такое GDI?
Что такое DDE, IPC?
Что такое OLE?
Что такое MDI?
Что такое VxD?
Что такое DLL?
Что такое ADO, DAO, ODBC, BDE?
Что такое MAPI?
Что такое RTL?
Что такое USB?
Что такое TSR?
Что такое QNX?
Что такое SQL?
Что такое NNTP, SMTP, XML, SOAP?
Что такое CGI, ISAPI, NSAPI?
Что такое API?
Что такое RTTI?
Что такое DDK?
Что такое IDDQD, RTFM, LMD?
Что такое MSDN?
Что такое COM, DCOM, COM+,OCX?
Какой Scan код (hex) клавиши “any key”?


 
DiamondShark   (2003-03-21 11:51) [19]


> Anatoly Podgoretsky © (21.03.03 10:59)
> Потому что они путают понятия каталог и файл и пытаются
> применить маску файла к каталогам, то есть применяют FindFirst("A?.B*"
> и к каталогам.


Не-а, не потому. Потому что они очень быстро ляпают рекурсивную процедуру, и применяют её к подкаталогам "." и ".."
;-)


 
Romkin   (2003-03-21 11:52) [20]

2Mike_Goblin 1. - просто integer - знаковое целое :-)
2. б - overload, там "пример перегрузки процедуры" а не метода

г, кстати, спорно... Я просто не проверял, если ошибка в конструкторе, остается ли у переменной объекта прежнее значение? Скорее всего нет (да и опираться на такое не надо), значит, AV при ошибке в конструкторе будет...

Кстати, мои результаты:
1. 127 вроде правильно, пришлось покурить
2. а - Хм... О том, что [] называется конструктором - не знал, пришлось лезть в хелп...
б - не принимайте меня за идиота :-)
в. Писать на листочке не буду, это уж точно издевательство, и получится с ляпсами, в свое время писал с десяток вариантов обращения матрицы, и ни одного раза (!) не обошлось без трассировки... Правда, давно это было. А здесь интересно развернуть рекурсию в цикл, но такого на листочке я точно не напишу :-))
г. - см Mike_Goblin
3. а. - то, что понизить видимость нельзя, но могу добавить, что реализация виртуальных методов вставляется в исполнимый файл не только для данного класса, но и всех его предков, еще и поэтому рекомендуют делать потомков от TCustom... - размер кода уменьшается
б. Понятно сразу - TStaticTExt - потомок TWinControl
в. TPersistent - потомки этого класса могут сохранять себя в поток. Ессно, много published пропертей - это потомки TCollection, и очень удобно, что они могут устанавливаться в design-time
г. У потомков TCustomForm & TDataModule. Кстати, вроде бы в D6 TDataModule уже Forms не использует, ура. А вот почему у других нет - не знаю, наверно потому, что у меня никогда надобность в таком не возникало :-)
д. Синглетон? Не знаю, с интерфейсом - просто, а вот объект...

4. Вот тут тяжко...
а. Что такое объекты ядра знаю, но вот все перечислить и для чего применяются :-(( Синхронизирующие - знаю, и функции waitFor, MsgWaitFor. Остальное - увы
б. Вроде бы не приводят, но не уверен... LoadLibrary должна просто мэппить модуль в адресное пространство
в. Не знаю, не пользовал. Вроде смутно помнится PeekMessage/GetMessage в цикле, и все. Избалован я Delphi
г. Ну это просто - первые две - посылка сообщения окну, причем Send ждет ответа, третья - в очередь сообщений потока, а там он сам разберется, что куда. И, если память не изменяет, только потоку в данном процессе.
д. Понятия не имею. Посмотрел хелп. Ничего не понял :-))



 
Mike_Goblin   (2003-03-21 12:02) [21]

2 Ihor Osov"yak
а еще лучше
Obj := TMyObject.Create;
try
...
finally
FreeAndNil(Obj);
end;



 
Игорь Шевченко   (2003-03-21 12:03) [22]

Romkin © (21.03.03 11:52)

4д. в GDI имеется понятие "выбранного в контексте устройства логического объекта" (кисть, перо, палитра, шрифт и т.д.) Только выбранный объект может использоваться при выполнении операций GDI, в которых участвуют кисти, перья, шрифты и т.д. По-другому просто не получится. Для выбора логического объекта в контекст устройства и служит функция SelectObject.
В системе создается заранее определенный набор логических объектов с общеупотребительными атрибутами. Для того, чтобы каждый программист не тратил время (а, главное, системные ресурсы), эти созданные объекты помещаются в некий stock. Для их выбора и последующего использования служит функция GetStockObject.


 
Ihor Osov'yak   (2003-03-21 12:04) [23]

2 Mike_Goblin © (21.03.03 11:41)

> г Чем отличаются функции SendMessage, PostMessage и PostThreadMessage? Опять же прочесть справку, я не держу в это голове


Ну батенька, вы даете... Это же базис... Если выйти немного за бросание компонентов на формы. Имхо..


 
Ihor Osov'yak   (2003-03-21 12:10) [24]

2 Mike_Goblin © (21.03.03 12:02)

Согласен, что лучше... Но єто не решает той проблемі, о которой я говорил - если в obj был мусор до вызова конструктора. Это будет в том случае, если obj определен как локальная, или уже после юзания и освобождения тем же Free (а не так, как Вы предлагаете; я впрочем иногда пишу Free(obj); obj := nil; :-)).

Ваш метод более коректен в том ртношении, что позволяет избежать проблем потом, если будет повторное использование obj. Но не решает проблем для первичного использования obj, если эта переменная определена ккак локальная...


 
REA   (2003-03-21 12:12) [25]

>д. Понятия не имею. Посмотрел хелп. Ничего не понял :-))

Вот оно поколение, которое не писало под 3.11 без OWL


 
DiamondShark   (2003-03-21 12:20) [26]

Я сегодня злой какой-то, так что кто не спрятался -- я не виноват.


> Вопрос 1 (на знание основ и платформы).


Ну ноль будет, а вот программиста, так пишущего на языке высокого уровня надо подвешивать за [вставить кому что нравится]


> Вопрос 2 (на знание языка, общее умение программировать
> и грамотность стиля).

Не-е, не так.
Вопрос 2 (на попугайское повторение заученных фич и кусков кода из книжек "Любая хрень за 21 день")


> Вопрос 3 (на знание и понимание VCL).

Вопрос д), очевидно, задумывался как провокационный.


> REA © (21.03.03 11:45)

Я знаю карате, кунг-фу, айкидо и много других страшных слов.


 
Ihor Osov'yak   (2003-03-21 12:23) [27]

2 REA © (21.03.03 12:12)

Да почему же новое, я к примеру тоже под 3.11 не писал, сразу пришлось от досовских задач к d3. Плюс к тому же - работа с графикой не моя стихия.



 
Игорь Шевченко   (2003-03-21 12:32) [28]


> б. Вроде бы не приводят, но не уверен... LoadLibrary должна
> просто мэппить модуль в адресное пространство


Приводят к гарантированной загрузке в working set страниц с кодом инициализации.


 
Style   (2003-03-21 12:33) [29]

2Г -> наверное правильно будет так
Obj := TMyObject.Create;
try
...
finally
Obj.Free;
end;


4Г -> Если не ошибаюсь
SendMessage - посылка сообщения одной нити(потоку)
PostMessage - посылка сообщения всем нитям
PostThreadMessage - посылка Msg указанной (конкретной) нити


 
Style   (2003-03-21 12:37) [30]

Да и 1 вопрос!

>>>Чему будет равно W после выполнения следующего кода процессором x86? Ответ объяснить

Вы забыли объяснить

I := High(I) shr 8;
сдвиг значения High(I) на 8 бит.
т.е. было $FFFFFFFF стало $00FFFFFF

W := PWord(Integer(@I) + 2)^;
тоже самое что
W := integer(I shr 16);

сдвиг еще на 16
получается $000000FF
а если тип integer
то ответ 127 потому что Integer - signed type!









 
Romkin   (2003-03-21 12:37) [31]

2DiamondShark ноль в любом случае не будет. А насчет так писать - это вполне искусственный пример на понимание, как хранятся числа и какой у них формат.
Насчет "попугайского" - напиши процедуру поиска файлов и отладь ее. Сколько времени уйдет?

2Игорь Шевченко это-то я понял из справки. Но ведь куча вопросов возникает - когда надо делать FreeObject, как организуется этот stock и тд В результате - мне нужен пример программы, чтобы понять, как писать :-( Поэтому и говорю - не понял


 
REA   (2003-03-21 12:39) [32]

>Приводят к гарантированной загрузке в working set страниц с кодом инициализации.

А там какие то флаги были типа LoadOnCall и т.п. Спорить конечно не буду - меня не слишком сильно интересовало, когда оно грузится в какой OS (может оно с прошлого раза загружено уже) и когда реально выгружается.


 
DiamondShark   (2003-03-21 12:45) [33]


> Romkin © (21.03.03 12:37)

Ноль -- это я High и Hi перепутал второпях.

Вот ноль ты заметил, а маразм в вопросе 3 пункт д пропустил.
А это посерьёзней формата чисел будет...


 
REA   (2003-03-21 12:49) [34]

High(I) - зависит от версии компилятора, поскольку тип принадлежит к generic integer types.


 
Romkin   (2003-03-21 12:51) [35]

2Style high(i) = $7fffffff, а 127 = $7F !!!
2Игорь Шевченко Да, о коде инициализации забыл :-(( Вообще-то Рихтера я очень давно не перечитывал, да и не интересовало меня это особо. Лучше на этом месте смотрелся бы вопрос о глобальных переменных в случае, когда dll подгружается несколькими процессами ;-)


 
Romkin   (2003-03-21 12:53) [36]

2DiamondShark Это не маразм. Как работает объект в своей глубине, знать надо - многие вопросы отпадают


 
Style   (2003-03-21 12:57) [37]

2 Romkin © -> Да если это Integer до
допустимый диапазон был бы от -7FFFFFFF до 7FFFFFFF Но в голове можно было сообразить что это UnSigned а потом поделить на два!
Так проще :)


 
han_malign   (2003-03-21 13:11) [38]

4.г) еще в школе учитель информатики вдалбливал - инициализируй переменную перед использованием и обнуляй после (лишнее оптимизатор сам выкинет, О!!! - кстати, как раз отимизатор то и не даст корректно отработать)
FillChar(Obj,sizeo(Obj),0);
try
obj:=TObject.Create;
.....
finaly
obj.Free;
(*
TEST EAX,EAX
JE @@exit
MOV ECX,[EAX]
MOV DL,1
CALL dword ptr [ECX].vmtDestroy
@@exit:
*)

end;
- а вообще если в моем конструкторе возникает Exeption - значит, либо пора делать сепуку программе(ну кончились ресурсы), либо харакири себе, но поскольку я не самурай - предпочитаю отладиться. Предпочитаю статус создания, возвращать через дополнительный метод, а не через Exeption, потому как, уж слишком долго они отрабатываются(в случае возникновения)...
З.Ы. Как мало мы оказывается знаем - а все из-за того, что переложили большую часть работы на компьютер (контекстная справка, проверка синтаксиса - особенно Hint-ы с Warning-ами)


 
Ihor Osov'yak   (2003-03-21 13:11) [39]

2 Style (21.03.03 12:33)

2Г -> наверное правильно будет так

Мне стыдно... Развел я тут хвилософию.. Тормознул с утра..

>4Г -> Если не ошибаюсь
Ошибаетесь.


SendMessage - посылка синхроного сообщения конкретному окну. Гарантируется, что сообщение будет обработано и только после этого дудет выполнен возврат из SendMessage.
Если окно в создавалось в том же потоке - это приводит к непосредственному візову оконной процедуры. Если сообщение посылается окну, зосданному в другом потоке, то выполнение собственного потока останавливается :-), посланное сообщение "присоединяется" к очереди синхронных сообщений потока создавшего окно-получатель (это немного не та очередь, которая обрабатывается с помощью getMessage и иже с ним). Если поток-получатель не был занят обработкой очередного сообщения - то он займется обработкой этого сообщения - то есть передаст оконной процедуре соответствующего окна но уже в своем контекусте. Если он обрабатывал некуе сообщение, то обработка его естественно окончится. И перед следующей иттерацией цикла сообщений - вернее где-то в глубине getmmessage или peekmessage проверяется очередь сынхронных сообщений - и если там есть наше сообщение - то оно будет обработано. После обработки синхронных сообщений от других потоков результат передается к вызвашему потоку и этот результат уже будет возвращен как результат SendMessage.. Вызвавший поток будет естественно пробужен...


PostMessage - ассинхронная посылка. То есть сообщение ставится в очередь того потока, который владеет (создавал) окном получателем.. Естественно обработка будет идти в контексте потока-владельца, но потом, когда до него очередь дойдет.. ( если окно "наше" - то и обработаем в своем потоке).. Естественно, окну оно будет передано тогда, когда разработчик цыкла не забудет сделать DispatchMessage :-)

PostThreadMessage - посылка прямо в цыкл выборки сообщения. Что с ним делать дальше - решает разработчик цыкла...


 
Ihor Osov'yak   (2003-03-21 13:20) [40]

2 Style (21.03.03 12:37)
Да и 1 вопрос!


>т.е. было $FFFFFFFF стало $00FFFFFF
$7FFFFFFF стало $007FFFFF

maxint - это $7FFFFFFF; $FFFFFFFF в интерпритации как целое знаковое дает -1

>W := PWord(Integer(@I) + 2)^;
>тоже самое что
> W := integer(I shr 16);

не совсем то... Обычная адресная арифменика...
Если не забывать что в памяти сначала младшие байты - затем чтаршие - то результат 7F:

FF FF 7F 00


$007F после интерпритации как word дает 127.

Усе..




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

Форум: "Потрепаться";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.59 MB
Время: 0.009 c
1-30427
Duke DEE
2003-03-26 19:26
2003.04.10
Создание компонентов в RunTime и дальнейшая работа с ними??


3-30265
off
2003-03-20 13:02
2003.04.10
Поиск в IB?


14-30531
alex134
2003-03-23 18:28
2003.04.10
Какой ассемблер взять?


3-30250
Ihtiandr
2003-03-20 17:00
2003.04.10
Как осуществить написанное?


3-30315
Горец
2003-03-24 01:51
2003.04.10
Связь БД с Excel...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский