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

Вниз

плохое объяснение и глюки в статье   Найти похожие ветки 

 
nika_ufc   (2002-11-16 17:32) [0]

Я почитал статью о потоках( http://delphi.mastak.ru/articles/panov/index.html) и там я не мог понять один маленький отрывок. Пожалуйста помагите понять этот материал.

TForm=TfMonDirMain
TStatusBar=sbMain
TTimer=tmDate

На form-е два компонента TTimer и TStatusBar.Для tmTimer определяем процедуру обработки события OnTimer.
В статье говорится:
Обратите внимание на строку tmDateTimer(Self). Процедуру обработки события OnTimer при создании формы мы вызываем для того, чтобы на панели статуса сразу же отобразились бы текущие дата и время. Если этот код не выполнить при создании формы, то при ее появлении на экране дата и время начнут отображаться только через одну секунду.
Все это ясно, но я не понимаю что представляет собой параметр Self и почему он передаеться в tmDateTimer.Я где-то читал что: когда создается объект конструктор помешает ссылку на созданый объект в переменную Self, которая которая автоматически объявляется в классе. Где объявлен переменная Self? и что значит:когда создается объект конструктор помешает ссылку на созданый объект в переменную Self?
Вот и Code:

procedure TfMonDirMain.tmDateTimer(Sender: TObject);
begin
sbMain.Panels[0].Text := FormatDateTime("dd.mm.yyyy hh.nn.ss",now);
end;


procedure TfMonDirMain.FormCreate(Sender: TObject);
begin
tmDateTimer(Self);
sbMain.Panels[1].Text := ‘Отключен’;
Application.Title := "Монитор каталогов";
end;

и так у меня следуюшие вопросы:
1.что представляет собой параметр Self(и пожалуйста не приведите ответи из Help-а)?
2.Почему он передаеться в tmDateTimer,не можна било бы чтоб, не передавать параметр вообше?
3.Где объявлен переменная Self?,
4.что значит:когда создается объект, конструктор помешает ссылку на созданый объект в переменную Self?
5.Какой тип у Self-а?
прошу ответить полноценно и спасибо заранее.


 
MBo   (2002-11-16 17:54) [1]

1) Self - это объект, которому принадлежит метод (в данном случае, наверно, форма form1)
2) в обработчики событий передается параметр Sender:TObject
Он используется, если надо узнать, какой именно объект инициировал событие (несколько объектов могут использовать один обработчик). В данном случае можно передавать Nil, так как в обработчике Sender не используется
3)не нужно объявлять
4) примерно так: Self:=Form1;
5) такой же, как у объекта, в чьих методах он используется



 
nika_ufc   (2002-11-16 18:03) [2]

и еше одно:
когда приходится вызвать коструктор родительского класса почему передается True. примерно вот так:
inherited Create(True);


 
MBo   (2002-11-16 18:09) [3]

Ну уж сам хелп прочти на
TThread.Create


 
asmith   (2002-11-16 18:10) [4]

1. Self - неявный параметр, который не будучи объявленым в прототипе метода класса, тем не менее присутствует при вызове метода. Считай для простоты, что каждый метод класса имеет еще один дополнительный параметр.
2. Тут скорее всего грамматическая ошибка (описка). Судя по комментарию в предыдущей строке прото явно вызывается событие таймера, т.е. что-то вроде tmDate.Timer(Self); - чувствуешь разницу - для объекта tmDate вызвали метод (он и является обработчиком события) Timer. Поскольку событие таймера имеет тип
TNotifyEvent = procedure (Sender: TObject) ofobject;
то нужен параметр при вызове типа ссылки на объект. Self подходит - его и поставили. Скорее всего обработчику события все равно, кто его вызвал - посмотрел в этой статье - так и есть, так что можно было бы поставить и nil.
3. Нигде не объявлена, компиллятор все это подставляет сам.
4. Нет, ибо переменной такой нет.
5. Такой же, как у класса, экземпляр которого (объект) создается и используется


 
Юрий Зотов   (2002-11-16 19:06) [5]

Заголовок мне понравился:
" плохое объяснение и глюки в статье "

Очень плохая статья. Просто ужасная. Там ведь не только про Self ничего не рассказано, там, например, и про 2х2 ни слова нет.

Серьезный недостаток. Это же придется самому таблицу умножения смотреть, как же так?

А я почему-то думал, что статья все же о потоках, а не об азбуке Delphi, которая и в хелпе, и в любой книжке расписана. Надо же так ошибиться!

А уж глюков-то в статье сколько! Правда, ни один не указан, но зато точно сказано, что они есть. Значит, и правда есть, никуда не денешься.

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

Нет, куда там! Автор статьи виноват - плохо объяснил, да еще и глючную статью выложил.

В общем, заголовок мне ОЧЕНЬ понравился.

Вот только не знаю, захочет ли автор статьи после таких заголовков писать новые статьи? Оно ему надо - тратить свое время и свой труд, а иметь с этого вот такие заголовки?



 
panov   (2002-11-16 19:10) [6]

-))


 
Fantasist   (2002-11-17 00:30) [7]

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


 
Юрий Зотов   (2002-11-17 01:36) [8]

> Но несмотря на такой заголовок, тело вопроса заданно вполне
> корректно без всяких упоминаниев глюков или плохости статьи.

То есть - сначала утверждаем, что статья глюкавая, а потом не приводим ни единого подтверждения этому.

Вполне корректно, что и говорить.


 
Fantasist   (2002-11-17 08:54) [9]


> То есть - сначала утверждаем, что статья глюкавая, а потом
> не приводим ни единого подтверждения этому.
>
> Вполне корректно, что и говорить


Может он от растройства так заголовок написал, а потом стал писать вопрос собрался и написал все нормально.


 
Юрий Зотов   (2002-11-17 12:40) [10]

> Fantasist

Что человек ХОТЕЛ сделать - я не знаю. Не телепат. Зато вижу, что он СДЕЛАЛ. И такие действия считаю некорректными. О чем и написал. Наивно полагая, что в будущем это хоть кого-то убережет от подобного.

А уж почему это произошло, от расстройства или нет - об этом мне тоже ничего не известно. Ваша же позиция мне, извините, непонятна.


 
Anatoly Podgoretsky   (2002-11-17 12:51) [11]

nika_ufc © (16.11.02 17:32)
Может ты еще не дорос до понимания, но в любом случае будь добр рассказать про глюки, а то не понятно как к тебе в дальнейшес относиться.



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

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

Наверх





Память: 0.48 MB
Время: 0.011 c
3-92836
Scolotovich
2002-11-12 14:27
2002.11.28
Проблемы с переносом проги: Win2к - > Win98


3-92881
Сергей Чурсин
2002-11-10 21:41
2002.11.28
Interbase и Force write enabled


3-92923
NiBL
2002-11-11 14:51
2002.11.28
FIBPlus


1-92983
BOBAH
2002-11-18 12:50
2002.11.28
Работа с ресурсами!


3-92886
Miss
2002-11-11 07:37
2002.11.28
Поиск





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