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

Вниз

Оператор IS небезопасен для форм - продолжаем разговор   Найти похожие ветки 

 
Суслик   (2004-07-15 14:40) [40]

Ничего он не должен.
Целевую функцию is выполняет сполна.
Не надо умничать и все будет хорошо.

======================================
Тут одному ro дали. Может зря?
Вполне точно выразил мысль imho.


 
Sandman25 ©   (2004-07-15 14:45) [41]

[40] Суслик   (15.07.04 14:40)

ro дали не за содержание высказывания, а за форму


 
Piter ©   (2004-07-15 14:46) [42]

Суслик   (15.07.04 13:39) [38]
Видел я эту ветку на королевстве.
Piter, уверяю - тебя там никто не понял


ВСЕ ОНИ ПОНЯЛИ! И если бы не Григорьев Антон - никто бы в жизни не догадался.

Я вот почему завел ветку - все тут после моих рассказов начали кричать, что знают про особенность IS (про compiler magic). Но извините я в это не совсем верил. И решил убедиться - а правда что ли все знают как работает IS, а я не знал?

И задал вопрос на королевстве - там люди не глупее обитают, спорить, думаю, никто не будет.

Вот ветка - http://www.delphikingdom.com/asp/answer.asp?IDAnswer=23761

если бы не Антон с ссылкой на эту тему - никто правильного ответа не знает. Смотрите что пишет народ:

If Btn is TButton then
после чего компилятор начнет копаться в предках Btn ищя класс с названием TButton (для начала чисто теоретичеки представьте этот процесс, можно попробовать реализовать ... дальше видно будет).


это написал некий  Johny B. Может, он там не мастер, но судя по всему - отвечает регулярно. Ну и что? Моя правда. Человек даже не подумал об compiler magic. У него сразу ассоциации с тем, что будет вызван IsClass!!! То есть, употребление Is он приравнивает к вызову IsClass.

И думаю никто бы не догадался.

где-то в JCL видел методы (процедуры), которые лезут в RTTI и меняют ссылку на класс обьекта

и он тоже даже не подумал об Is как о compiler magic. Он тоже ассоциирует употребление IS как вызов IsClass - поэтому единственным способом обмануть считает изменение класса объекта.

Если честно, я думаю, что до этой ветки и здесь многие не знали о таком свойстве Is. Просто не знали. Да, оно проявляется редко в хорошо написанных программах. Но такое свойство у Is есть. И тем более непонятно почему когда я рассказал о таком свойстве все стали кричать, что это понятно даже дебилам, хотя наверняка сами и не знали раньше о таком поведении Is.

Все вышеперечисленное мое ИМХО. Пожалуйста, не пишите в ветку на королевстве.
И так как эксперимент немного сорвался - я еще и в ФИДО планирую написать - надеюсь, там никого из нашенских не будет :) А если будет - то не отвечайте в ФИДО, если увидите такой вопрос, ок?
Мне просто интересно...


 
Суслик   (2004-07-15 14:46) [43]


> ro дали не за содержание высказывания, а за форму

да понимаю я - это намек именно на содержание...


 
Sandman25 ©   (2004-07-15 14:49) [44]

>Да, оно проявляется редко в хорошо написанных программах.

Можно 1 пример проявления в хорошо написанной программе?


 
Суслик   (2004-07-15 14:50) [45]


> это написал некий  Johny B. Может, он там не мастер, но
> судя по всему - отвечает регулярно

вы тоже регулярно отвечаете.


> Мне просто интересно...

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


 
Anatoly Podgoretsky ©   (2004-07-15 14:54) [46]

Cobalt ©   (15.07.04 12:28) [36]
Что делать нет совершенства в этой жизни.


 
Sandman25 ©   (2004-07-15 14:57) [47]

Нет, ну серьезно. Покажите мне пример хорошей программы с
Button: TButton и Button is TButton


 
Суслик   (2004-07-15 15:00) [48]

Не покажет он ничего.
Успокоится только когда окажется что всё фидо, интернет, секретная сеть ФСБ и пентагона не знают про особенности is.


 
Sandman25 ©   (2004-07-15 15:08) [49]

Button: TButton;

begin
 repeat
   Button := TButton(Pointer(Random(MAXINT)));
 until Button is TButton;
 Button.Click;
end;

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


 
Суслик   (2004-07-15 15:13) [50]


> Жалко только, что программа не очень хорошая

Конечно не очень хорошая.

А что если tbutton скрывается в верхних 2гб? Не подумали?
Вот если от 0 до 4гб, тогда точно была бы хорошая программа - tbutton от нас нигде не сроектся.

:)


 
Sandman25 ©   (2004-07-15 15:16) [51]

[50] Суслик   (15.07.04 15:13)

А какая разница? ГСЧ все равно не гарантирует выпадание заданного числа N ни за какое время, а программный ГСЧ не гарантирует, что вообще возможно выпадение этого заданного числа в принципе. Так что в любом случае возможно зацикливание :)


 
Piter ©   (2004-07-15 15:25) [52]

Sandman25 ©   (15.07.04 14:49) [44]
Можно 1 пример проявления в хорошо написанной программе?


Ладно. В хорошо написанных программах такого не встречается. Ибо magic compiler работает только в случаях когда программист и сам будет знать о результате IS. Поэтому и не будет применять Is.
Но это те, кто знает


 
Piter ©   (2004-07-15 15:29) [53]

Суслик   (15.07.04 15:00) [48]
Успокоится только когда окажется что всё фидо, интернет, секретная сеть ФСБ и пентагона не знают про особенности is.


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


 
ИдиотЪ   (2004-07-15 15:31) [54]

ну хочется человеку, чтоб ему памятник при жизни поставили, тут уж ничем не остановить
Я тоже когда-то нашел одну особенность, тоже немного пообсуждали и успокоились.
Опубликует книгу потом "Моя жизнь в поисках истины is"


 
Суслик   (2004-07-15 15:34) [55]


> Piter ©   (15.07.04 15:29) [53]

В какой ветке я сам решу, ок?

Иронии и тени не был - это скокойная правда.
Вы все успокоится не можете, что так много времени потратили на такую ерунду. Ну что же - в будущем рациональнее будете.

Какая у вас догадка?! CPU под боком - ответ давно получен.


 
Суслик   (2004-07-15 15:35) [56]


> ИдиотЪ   (15.07.04 15:31) [54]
> ну хочется человеку, чтоб ему памятник при жизни поставили,
> тут уж ничем не остановить

Бинго


 
jack128 ©   (2004-07-15 18:08) [57]


> А оператором IS мы ПРОСИМ КОМПИЛЯТОР ПРОВЕРИТЬ. Это ведь
> разные вещи?
>
> Я вовсе не в обиде на компилятор, если код:
>
> TButton(SamePointer).Caption := "Ла-ла-ла".
>
> приведет к ошибке. Потому что использовав такую конструкцию
> я ГОВОРЮ компилятору, что SamePointer - это экземпляр TButton.
> Он мне должен верить (я разработчик) и не обязан ничего
> проверять.

а вот так я говорю компилятору, что btn - это кнопка
var
 btn: TButton; //И он мне должен верить (я разработчик) и не обязан ничего  проверять.
;-)


> Это не технические трудности, это невозможно принципиально.
ну и что? Ну а представим, что это возможно тогда что? Тогда компилятор должен осуществлять такую проверку? Если считаешь, что да, тогда ответь на вопросы, поставленные>  [37] han_malign ©   (15.07.04 13:31)


 
Piter ©   (2004-07-15 18:15) [58]

Удалено модератором
Примечание: Очередные нападки, в том числе и на модераторов


 
olookin ©   (2004-07-15 18:22) [59]

[58] Piter ©   (15.07.04 18:15)
Нет бы хоть проявить толику уважения к человеку, который сказал для вас какую-то новую вещь...

Уважаю. Но мне не менее параллельно о семантике IS равно как и тебе мнение там каких то людей, уважающих модераторов или мастеров.


 
Суслик ©   (2004-07-15 18:29) [60]


>  Факт в том, что это многие не знали, как тот же Суслик.

Ну и что?


> А Вы, видимо, поставили для себя задачу убедить меня, что
> я ламак

Как вам кто-то говорил - вы точно параноик :)))


> чуть попытался задать неочевидный вопрос

Не надо говорить неправду :)))
Вспомните самый первый вопрос? Он был неочевиден? Наверное только вам. :))) Не перетягивайте. И Григорьев и Тимохов заметили вам о том, что считают один из открытых вами фактов (несоответсвие описание реализации) интересным. Что же вам еще надо. Чтобы о вас статью написали в правде? :)))

В качестве вывода :)))
Как вы говорите "интересная вешь" получается: облажался в невинном месте, выяснил много нового (за это респект), почему облажался, и страсть как хочет узнать а могли ли другие (теоретически) так облажаться. И мне кажется начинает успокаиваться узнав о том, что могли, т.к. не знали факта отрытого им.

Спешу разочаровать - не могли :))) Т.к. данный факт для других просто не важен потому как никто не доводит до ситуации, когда такой факт съиграет роль и не зная его облажаешься.

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

----------------------------
За "дефекацию" и весь пост (твой) могут почикать.
Не кипятись :)))


 
jack128 ©   (2004-07-15 18:30) [61]


> А Вы, видимо, поставили для себя задачу убедить меня, что
> я ламак.
Да? Где это я такое говорил?



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

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

Наверх




Память: 0.59 MB
Время: 0.044 c
4-1087810017
Subdigger
2004-06-21 13:26
2004.08.01
CreateProcess


3-1089372558
Sirruf
2004-07-09 15:29
2004.08.01
PickList в TColumnEh


4-1087814076
Users
2004-06-21 14:34
2004.08.01
CreateFile для привода CD


14-1090117107
Думкин
2004-07-18 06:18
2004.08.01
С днем рождения! 18 июля


1-1090392857
Дмитрий 2004
2004-07-21 10:54
2004.08.01
как в Image можно очистить рисунок