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

Вниз

О правиле имен :)   Найти похожие ветки 

 
McSimm   (2002-02-14 10:30) [0]

"...подлинное имя воплощает самую суть вещи. Назвать имя - значит обрести над этой вещью власть. Я верно отвечаю, госпожа учительница?"
Урсула Ле Гуин. "Правило имен".

Посмотрите на этот пример и постарайтесь предсказать что попадет в Caption формы при нажатии на Button1. Потом проверьте.
На форме лежат:
Button1: TButton;
MyNameIsA: TEdit;
MyNameIsB: TMemo;

procedure TForm1.Button2Click(Sender: TObject);
begin
MyNameIsA.Text := "Меня зовут A";
MyNameIsB.Text := "Меня зовут B";

MyNameIsA.Name := "Unnamed";
MyNameIsB.Name := "MyNameIsA";

Caption := MyNameIsA.Text
end;


 
Юрий Федоров   (2002-02-14 10:37) [1]

form1


 
McSimm   (2002-02-14 10:42) [2]

???
Наверно вопрос не внимательно прочитал :)
Последняя строка - присвоение Caption откуда будет брать текст. Из TEdit или из TMemo ?


 
Alx2   (2002-02-14 10:46) [3]

Из TEdit


 
McSimm   (2002-02-14 10:52) [4]

:)


 
Desdechado   (2002-02-14 10:54) [5]

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

На форме лежат:
Button1: TButton;
TForm1. Button2Click(Sender: TObject);

конечно, можно прицепить этот обработчик на Button1, но об этом не сказано


 
McSimm   (2002-02-14 10:58) [6]

:)
Доп. условие.
Button1.OnClick = Button2Click;



 
Юрий Федоров   (2002-02-14 11:00) [7]

Ну вот с этого и надо было начинать :)


 
Юрий Федоров   (2002-02-14 11:01) [8]

>Desdechado Скомпилируется
"Меня зовут A"


 
McSimm   (2002-02-14 11:04) [9]

:)
>Юрий Федоров © (14.02.02 11:00)
Ну это не серъезно. Какая разница какой метод к кнопке прицеплен.

А вот с правилом имен, вижу, никто не разобрался. А у меня есть вариант пожестче:

второй вариант:
Все то же самое, но вместо TMemo - лежит TLabel, а вторая строчка
MyNameIsB.Caption := "Меня зовут B";

Откуда Caption := возьмет строку из TEdit или из TLabel?


 
Юрий Зотов (M)   (2002-02-14 11:08) [10]

"Меня зовут A".
Возня с Name - попытка запутать. No pasaran!


 
McSimm   (2002-02-14 11:09) [11]

:)


 
McSimm   (2002-02-14 11:11) [12]

точнее
;)


 
Юрий Федоров   (2002-02-14 11:13) [13]

А я думал, что подвох именно в Button2,
иначе тут особо и думать не о чем


 
McSimm   (2002-02-14 11:14) [14]

А может все-таки pasaran?

Кстати. Если кто-нибудь все же попробует проверить, не советую Button1 два раза нажимать :)

(Почему?)

Классная задачка получилась.


 
McSimm   (2002-02-14 11:16) [15]

Я на этот прикол года три назад наткнулся.
Вот сегодня вспомнилось

Читайте Урсулу Ле Гуин!!!!!!!


 
McSimm   (2002-02-14 11:24) [16]

Ну не верит народ в чудеса и все.

Проверьте. В обоих случаях текст будет взят из 2го компонента.
!!!!!!!!!

:)))


 
Алексей Петров (M)   (2002-02-14 11:31) [17]

Да уж. Прикол.

Оказывается в TControl.SetName производится поиск среди published свойств владельца и приведение их в соответствие с Name :)
И на кой Х... такие фокусы в Borland насочиняли?

Но факт. Результат совершенно не соответствует ожиданиям !!!!


 
Юрий Федоров   (2002-02-14 11:35) [18]

Вообще беда.
Как теперь программировать?


 
McSimm   (2002-02-14 11:38) [19]

Ну что весело?

"...А ну-ка, прими свое истинное обличье! Приказываю это тебе и заклинаю истинным твоим именем - Йевод!
...
Да,- хрипло прошипел могучий дракон. - Мое подлинное имя действительно Йевод, а мое подлинное обличье - вот это."

Урсула Ле Гуин. "Правило имен".


 
Юрий Зотов (M)   (2002-02-14 11:47) [20]

Я в шоке...
IMHO, здесь разработчики Delphi все же перестарались. Даже несмотря на csSetCaption.


 
McSimm   (2002-02-14 11:50) [21]

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


 
metal   (2002-02-14 12:41) [22]

Причем здесь published поля?
SetName ничего с ними не делает.
Посмотрите внимательней на VCL.
Там гораздо круче - ссылки на компоненты, как поля формы,
переприсваиваются.




 
McSimm   (2002-02-14 12:52) [23]

ссылки на компоненты, как поля формы как раз и являются published полями формы.
(если они положены на форму в design-time, разумеется)


 
metal   (2002-02-14 13:06) [24]

теперь понял, что ты имел ввиду.
А вообще-то это засада получается.
Если я правильно понял, то
MyNameIsB.Name:= "MyNameIsA";
эквивалентно:
MyNameIsA:= MyNameIsB;
MyNameIsB:= nil;

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


 
VictorT   (2002-02-14 13:09) [25]

Читал упомянутый расказик. После данной ветки наверно перечитаю ещё раз.


 
McSimm   (2002-02-14 13:20) [26]

>metal (14.02.02 13:06)
Не совсем. MyNameIsA - имеет имя Unnamed.

>VictorT (14.02.02 13:09)
:)
А еще лучше все "Земноморье" перечитать.


 
Юрий Федоров   (2002-02-14 13:26) [27]

Получается, что если мне присвоить имя "McSimm", то я стану
McSimm"ом


 
metal   (2002-02-14 13:27) [28]

>McSimm
не соглащусь. Я в предыдущем сообщении все верно написал.
Поле MyNameIsA имеет имя "MyNameIsA" и, после того кода
ссылается на обьект MyNameIsB.
А в списке компонент формы элемент, который ссылался на
MyNameIsA получает имя "Unnamed".


 
VictorT   (2002-02-14 13:38) [29]

>А еще лучше все "Земноморье" перечитать.
А "Земноморье" - это чего? Тоже произведение Урсула Ле Гуин?
Или книжка в которой был этот рассказик? Или ещё как?


 
McSimm   (2002-02-14 13:47) [30]

Земноморье - это мир, созданный писательницей Урсулой Крёбер ле Гуин в её фэнтэзи-романах "Волшебник Земноморья", "Гробницы Атуана", "На самом дальнем берегу", "Техану".

Этим 4м романам предшествовали несколько рассказов - исследования мира Земноморья:
"Правило имен (The rule of unbinding)",
"Освобождающее заклятие (The word of unbinding)".
К сожалению всех сейчас не помню


 
VictorT   (2002-02-14 14:00) [31]

2 McSimm
Спасибо, что просветил, я ничего из этого не читал, вообще не предпологал что этот рассказик - часть чего-то целого. Поищу в Инете.


 
McSimm   (2002-02-14 14:13) [32]

>Юрий Федоров © (14.02.02 13:26)
Не сразу заметил.

Не получается. Сначала это имя надо забрать у меня. Иначе поднимится exeption. Кроме того nickname - это как раз не подлинное имя, которое хранится в тайне и известно только самым близким людям, да и то не всегда. :)

>VictorT (14.02.02 14:00)
Очень рекомендую найти в бумажном варианте. Я пытался читать свои любимые вещи в электронном варианте. Не знаю в чем тут дело, но настроение испортил сильно.
А Ursula K. Le Guin я прочитал все до чего смог дотянуться. Чего и всем желаю.
Она - один из авторов, сильнейшим образом повлиявших на мое Я.
И оно (мое Я) об этом нисколько не жалеет.


 
PVOzerski   (2002-02-14 14:51) [33]

И еще об именах. Если мы используем Ole Automation, то вызываемые из серверного приложения
методы могут иметь черт-те какие имена: с умляутами и т.п. И почему-то Delphi это кушает.
А что будет, если такое имя окажется зарезервированным словом из Pascal (with, array и т.п.)?
И более практический вопрос: а если коллизия возникнет, то alias к такому методу средствами
Delphi назначить можно?


 
McSimm   (2002-02-14 18:28) [34]

>VictorT (14.02.02 14:00)
>Поищу в Инете.
Мне тут ссылочку подсказали:
http://www.lib.ru/LEGUIN/
Но все-же рекомендую читать в печатном виде.


 
VictorT   (2002-02-14 18:36) [35]

2 McSimm
Спасибо за ссылочку.


 
Пиноккио   (2002-02-14 22:16) [36]

Не понимаю, что я делаю неправильно???
У меня в заголовке получается - "Меня зовут В".


 
McSimm   (2002-02-15 10:10) [37]

>Пиноккио (14.02.02 22:16)
Все правильно. Именно это и должно получиться.
Суть темы в том, что ожидаемый результат - противоположный.

Особенно загадочным (на первый взгляд) выглядит вариант с TLabel, у которого вообще нет поля "Text". Однако именно его получит Caption в последней строке примера.


 
Станислав   (2002-02-15 10:32) [38]

А что получится в этом случае?

MyNameIsA.Text := "Меня зовут A";
MyNameIsB.Caption := "Меня зовут B";

MyNameIsA.Name := "Unnamed";
MyNameIsB.Name := "MyNameIsA";
MyNameIsA.Name := "MyNameIsB";

Caption := MyNameIsA.Text


 
McSimm   (2002-02-15 10:44) [39]

>Станислав © (15.02.02 10:32)
Ничего хорошего.
строчка
MyNameIsA.Name := "MyNameIsB";
Будет обращатся не к исходному MyNameIsA, а к окрещенному
И вернет ему исходное имя.

поле MyNameIsA после этих манипуляций, по видимому, примет значение nil.



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

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

Наверх





Память: 0.53 MB
Время: 0.008 c
1-90966
kull
2002-03-14 03:04
2002.03.28
Функция поиска подстроки


1-90839
snoup
2002-03-16 01:00
2002.03.28
Как написать СКАНЕР ПОРТОВ!


3-90802
Дима С.
2002-02-28 11:14
2002.03.28
Oracle Call Interface (OCI)


4-91113
@ndron
2002-01-16 20:18
2002.03.28
Баттоны эдиты... etc


7-91084
WarChilD
2001-12-20 20:43
2002.03.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский