Главная страница
    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.57 MB
Время: 0.036 c
1-1090371271
Anndrey
2004-07-21 04:54
2004.08.01
Как запустить приложение с правами администратора


14-1089890356
ruslan
2004-07-15 15:19
2004.08.01
krasiviy tekst


1-1089965444
Zlod3y
2004-07-16 12:10
2004.08.01
MaskEdit


3-1089209563
djoni21
2004-07-07 18:12
2004.08.01
Как перекомпелировать dll под Linux


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





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