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

Вниз

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

 
Diablo   (2003-12-13 20:11) [0]

Вот тут спор недавно был, активно "опускали" Архангельского и восхваляли Тейксера на пару с Пачеко. Открыл тут давече их книжку, первое, что бросилось в глаза:

"Например, чтобы назначить собственный обработчик событию OnClick компонента TButton, следует вначалале объявить и определить метод, который будет отвечать за это событие. Такой метод должен принадлежать форме, владеющей компонентом TButton"

Можно еще специально поискать...


 
k-man   (2003-12-13 20:16) [1]

Может я не догоняю но что не так?


 
DiamondShark   (2003-12-13 20:20) [2]


> Можно еще специально поискать...

Так в чём проблема?

Только писать лучше сразу на адрес издательства...


 
Ske4er   (2003-12-13 20:29) [3]

А переводчики конечно не ошибаются... (Архангельского помните?)


 
Diablo   (2003-12-13 20:40) [4]

Ну тут что-то никто не догадался писать на адрес издательства Архангельского.

k-man
забыл добавить :) Речь шла о Динамическом назначении кода события

TForm1 = class (TForm)
Button1: TButton;
...
private
MyOnClickEvent(Sender: TObject);
end;


Тейксер и Пачеко хотят сказать, что MyOnClickEvent должен принадлежать форме, владеющей компонентом TButton.

Что на это скажет, в частности, Игорь Шевченко?


 
Юрий Федоров   (2003-12-13 20:47) [5]

>>Diablo (13.12.03 20:40) [4]
Книга в целом замечательная. Может быть они мели в виду конкретный (частный) случай, а при вырывании из контекста это прозвучало как бред ?

Вообще ляпы бывают везде. Вот в Тенцере с удивлением вычитал код :
MyObject:=TMyObject.Create;
if MyObject = nil then
...


 
Игорь Шевченко   (2003-12-13 20:56) [6]

Diablo (13.12.03 20:40)

Метод OnClick кнопки может принадлежать любому объекту, в том числе и форме, являющейся владельцем кнопки.

Открою вам страшную тайну - в книге Тейсксеры и Пачеко иногда встречается искаженное написание имен методов, классов и процедур. Буквы пропущены или переставлены местами.

Но ценность книги от этого не снижается.


 
хм   (2003-12-13 21:07) [7]

Какая ето страница в книге, и что написано в английском варианте?


 
Юрий Зотов   (2003-12-13 21:11) [8]

IMHO, при сравнении книг не стоит обращать особого внимания на опечатки или мелкие неточности. Сравнивать надо более принципиально - о ЧЕМ говорится в книге? ЧТО она дает читателю?

Если только о том, как таскать объекты по форме, то это одно. А если еще и о том, что такое сборка мусора и как она работает - то это совершенно другое.


 
Diablo   (2003-12-13 22:01) [9]

Метод OnClick кнопки может принадлежать любому объекту, в том числе и форме, являющейся владельцем кнопки

Это вы мне объяснили? Я в курсе

Открою вам страшную тайну - в книге Тейсксеры и Пачеко иногда встречается искаженное написание имен методов, классов и процедур. Буквы пропущены или переставлены местами

Вы же, наверное, понимаете отличие опечаток от искажения фактов? Опечатку может найти и новичок. Ошибку в фактах новичок может и не найти. Я вообще не к тому, что книга плохая. Я вот к чему - вы привели ошибки в Архангельском, я привел ошибку в данной книге. Ну и о чем это говорит? По моему, только о том, что все ошибаются, и не только в орфографии, но и в смысле предложения.
Как это ошибка не свидетельствует о низком уровне авторов, так и ошибка в Архангельском не говорит о его низком уровне. Просто все ошибаются - вот и все.

Книга в целом замечательная. Может быть они мели в виду конкретный (частный) случай, а при вырывании из контекста это прозвучало как бред ?

А в каком это частном случае обработчик события компонента должен принадлежать форме, на которой компонент расположен?
Привожу полностью текст:
Заголовок: "Динамическое назначение кода события
Тот факт, что события - это указатели на методы, наиболее наглядно проявляются при динамическом назначении обработчика событию. Например, чтобы назначить собственный обработчик событию OnClick компонента TButton, следует вначалале объявить и определить метод, который будет отвечать за это событие. Такой метод должен принадлежать форме, владеющей компонентом TButton".
Далее идет пример, часть которого я показал выше.

Вообще ляпы бывают везде. Вот в Тенцере с удивлением вычитал код :
MyObject:=TMyObject.Create;
if MyObject = nil then


А мне кажется ничего удивительного. Я правда точно не помню, надо в дебагере посмотреть, но вроде как раз если объект не создан - то конструктор и возвращает nil. Или по крайней мере, если до вызова конструктора MyObject был равен nil, то после вызова, еслли экземпляр не создан - он останется nil. Таким образом можно контролировать, создан ли объект на самом деле или нет.


 
Vuk   (2003-12-13 22:07) [10]

to Diablo:
>еслли экземпляр не создан - он останется nil
"Не создан" он может быть только в случае исключения в конструкторе. Но в этом случае до if не дойдет.


 
хм   (2003-12-13 22:11) [11]

>Diablo
Это неправильный перевод


 
Anatoly Podgoretsky   (2003-12-13 22:15) [12]

Diablo (13.12.03 22:01) [9]
Вот только сравнение здесь не будет корректным, поскольку сравнивается одна книга на оригинальном языке в переводом другой книги, а это не совсем корректно, поскольку известно, что переводчики часто искажают контекст да и просто не верный делают перевод.
И очень хорошо, что ты затронул именно эту книгу, посколько здесь точно известно качество работы переводчиков, оно местами очень низкое, что бы не быть голословным приведу известный ляп перевода. В данной книге есть такое "в Дельфи можно применять операторы += и аналогичные, как в Си". В оригинале же обратное, в отличии от Си в Дельфи нельзя применять операторы +=. Связано это с тем, что переводчик не в должной мере владеет американским диалектом английского, в котором инвесная логика для отричания.
Если в английском фраза будет выглядеть так "Я не пойду в кино", то в американсом жто будет так "Я пойду не в кино". На этом часто прокалываются переводчики, особенно если предложение сложное.

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

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


 
Anatoly Podgoretsky   (2003-12-13 22:17) [13]

Выше сказанное к Архангелькому не применимо, поскольку не перевод и интересно бы было взглянуть на перевод, сделаный теми же переводчиками.


 
wnew   (2003-12-13 22:21) [14]

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


 
Юрий Федоров   (2003-12-13 22:31) [15]

>>Anatoly Podgoretsky © (13.12.03 22:17) [13]
ну если переводчики будут а ссы, тогда наверно хорошая книга получится ))


 
Anatoly Podgoretsky   (2003-12-13 22:32) [16]

Наверно


 
Mihey   (2003-12-13 22:55) [17]

На Архангельского без наездов. Крутой чел. Его "Зугрузка" рулит. Читаю только Архангельского.


 
Игорь Шевченко   (2003-12-13 23:16) [18]

Diablo (13.12.03 22:01)

Впрочем то, что вы читаете Тейкстейру и Пачеко, уже сам по себе факт хороший.


 
Diablo   (2003-12-14 01:19) [19]

Какая ето страница в книге, и что написано в английском варианте?

Страница 391, заголовок "Динамическое назначение коды события"
Неужто вы мне не верите? :)

IMHO, при сравнении книг не стоит обращать особого внимания на опечатки или мелкие неточности

Согласен с вами, Юрий. Добавлю, что я не сравнивал эти книги

Если только о том, как таскать объекты по форме, то это одно. А если еще и о том, что такое сборка мусора и как она работает - то это совершенно другое

Тут бы я вот что хотел заметить. Книги Тейксеры и Пачеко - для относительно опытных, книги Архангельского - для начинающих. Вот и все.
Хотя сборку мусора можно и новичкам объяснить, но просто в книге Архангельского этого нету. Ну нету и все. Может, в следующей редакции и будет.

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


 
Diablo   (2003-12-14 01:38) [20]

Игорь Шевченко © (13.12.03 23:16) [18]

Я понимаю, что вас распирает от собственной крутости - но, пожалуйста, сбейте с себя спесь. Вы же не знаете о моем уровне - не надо меня за мальчика держать, ок?
Заранее прошу прощения за резкость, но ваш пост мне не понравился.

Не создан" он может быть только в случае исключения в конструкторе. Но в этом случае до if не дойдет

Хм, ну ведь код в конструкторе насколько помню "обнесен" try.. finally

Это неправильный перевод

Вы уверены? На оригинале у меня только D5 есть, попробую найти там тоже самое место. Но это потом - спать хочу :)


 
Diablo   (2003-12-14 02:00) [21]

А, кажется вспомнил. В конструкторе идет перехват исключения, но потом оно заново возбуждается? Тогда действительно - до if дело не дойдет :)


 
nikkie   (2003-12-14 02:04) [22]

>На оригинале у меня только D5 есть, попробую найти там тоже самое место.
думается мне, если переводчики не переврали совсем, то в оригинале будет написано should. а уж как это слово переводить дело тонкое...

а вообще, вполне вероятно, что оригинал может быть прочитан, как инструкция-пример того, как можно (should=следует) это делать.


 
Думкин   (2003-12-14 06:27) [23]

Насчет перевода - верно.
Читал книгу по языкам программирования - и у меня 2 параграфа просто не сростались логически, пока я не додумал за переводчика, что же было в оригинале и где он ошибся. У сына переводные книги смотрел - ляп на ляпе, причем многие ляпы на уровне студента-двоечника.
Читал как-то книгу о литературных переводах и разборе сложных случаев, там приводилась масса примеров разных переводов. Смысл иногда менялся на порядки, совсем изменяя ход повествования и логической стройности.
Да и была ссылка на "Гоблина", где он собрал ЧАВО - и в частности, рассмотрел и эту проблему.


 
Юрий Зотов   (2003-12-14 07:47) [24]

> Diablo (14.12.03 01:38) [20]

> ну ведь код в конструкторе насколько помню
> "обнесен" try.. finally

Try-except. В except уничтожается свежесозданный объект, а затем исключение перевозбуждается (чтобы выдать сигнал "во внешний мир"). Так что до if дело действительно не дойдет.


 
Игорь Шевченко   (2003-12-14 12:48) [25]

Diablo (14.12.03 01:38)
> Вы же не знаете о моем уровне - не надо меня за мальчика
> держать


Да ни за кого я вас не держу - вы сами себя выставляете в таком свете :)


 
fool   (2003-12-14 13:07) [26]

Вот обсуждаемый кусок из оригинала:
Plugging Code into Events at Runtime
It becomes clear how events are method pointers when you assign an event handler to an event
programmatically. For example, to link your own event handler to an OnClick event of a
TButton component, you first declare and define the method you intend to assign to the but-ton’s
OnClick event. This method might belong to the form that owns the TButton component,
as shown here:
TForm1 =class(TForm)
Button1:TButton;
...
private
MyOnClickEvent(Sender:TObject);//Your method declaration
end;


 
JibSkeart   (2003-12-14 13:07) [27]

Читайте книжки на англицком :)


 
Pat   (2003-12-14 13:15) [28]

>Страница 391, заголовок "Динамическое назначение коды события"
Мне больше музыку напоминает, чем програмирование :-)


 
Diablo   (2003-12-14 14:45) [29]

Да ни за кого я вас не держу - вы сами себя выставляете в таком свете :)

Ну и как я себя выставляю в таком свете? Говоря, что Архангельский неплохой писатель? Хорошая у вас логика, отличная просто. Вроде "Все те, кто считают, что Архангелький нормальный автор - ламеры". Ибо никаких других поводов так думать обо мне я не вижу.
Ну если это действительно так - то можно и не продолжать разговор.



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

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

Наверх





Память: 0.54 MB
Время: 0.014 c
8-12007
Leon Killer
2003-09-02 18:13
2004.01.05
VCL


1-11940
Cerber
2003-12-20 13:55
2004.01.05
Как из Memo перенести все данные в массив. Тоесть каждый символ в


1-11919
Magician
2003-12-21 10:07
2004.01.05
Прокрутка коипонента


1-11949
ASt
2003-12-20 00:06
2004.01.05
Параметры запуска приложения


1-11846
Alex-11111
2003-12-20 03:36
2004.01.05
Как в Richedit вывести список





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