Форум: "Прочее";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];
ВнизИщу работу Найти похожие ветки
← →
AEN (2008-06-13 18:11) [0]Опытный пользователь ПК, ан.яз., MS Office знание комплектующих, программирование: Delphi, C/C++, HTML... Быстрая обучаемость... Образование: высшее неоконченное... Не посоветуете чего-нибудь?
← →
Игорь Шевченко © (2008-06-13 18:12) [1]Метлу ?
← →
McSimm © (2008-06-13 18:15) [2]В каком штате ?
В офис в Кливлинде на собеседование подъедете на след. неделе ?
← →
AEN (2008-06-13 18:16) [3]В Москве:)
← →
wicked © (2008-06-13 18:20) [4]
> Опытный пользователь ПК, ан.яз., MS Office знание комплектующих,
> программирование: Delphi, C/C++, HTML
звучит как "видел, когда то делали какие то лабораторки"
← →
AEN (2008-06-13 18:23) [5]>>wicked © (13.06.08 18:20) [4]
Не так... В этой области я считаю себя продвинутым...Delphi, C/C++, HTML + Ассемблер ещё......
← →
Игорь Шевченко © (2008-06-13 18:26) [6]
> В этой области я считаю себя продвинутым...
Продвинутость обычно надо как-то показывать.
> Delphi, C/C++, HTML + Ассемблер ещё......
А Lisp ?
← →
AEN (2008-06-13 18:28) [7]А Lisp ?
:)))
Пожалейте, помогите найти работу...
← →
Azize © (2008-06-13 18:32) [8]200 уе в месяц за
> Опытный пользователь ПК
думаю тебе везде заплотят
← →
AEN (2008-06-13 18:34) [9]Azize © (13.06.08 18:32) [8]
Посерьезнее чего-нибудь...
← →
oxffff © (2008-06-13 18:36) [10]
> В этой области я считаю себя продвинутым
Чем интроспекция отличается от метаинформации?
← →
AEN (2008-06-13 18:44) [11]смыслом
← →
Smile (2008-06-13 18:47) [12]Уважаю
> Игорь Шевченко © (13.06.08 18:12) [1]
> McSimm © (13.06.08 18:15) [2]
за продвинутое хамство, самоудовлетворенность и наглость.
← →
McSimm © (2008-06-13 20:21) [13]Не надо меня уважать за чужие качества. Я думаю у вас просто не очень ладно с чувствм юмора :)
(Кстати, у компании, где я работаю действительно много вакансий и офис в Кливлинде тоже есть. Правда резюме не подходит)
← →
TUser © (2008-06-13 21:25) [14]Врач, умею каталогизировать истории болезни, подклеивать анализы, ... лечение рака легких (100% эффективность) ... помогите найти работу.
← →
Dmitry S © (2008-06-13 21:37) [15]
> Быстрая обучаемость
А как ты это определил?:)
← →
VingtQuatrieme © (2008-06-13 23:41) [16]>AEN (13.06.08 18:11):
>Опытный пользователь ПК, ан.яз., MS Office знание комплектующих,
>программирование: Delphi, C/C++, HTML... Быстрая обучаемость...
Да Вы чего!? Это ж, нарасхват теперь! И в Москве?
Ой, Боже мой, я Вас умоляю!
Я тут давеча дурёху, которая не то, чтобы ан.яз., которая даже
русским с трудом владеет (прописка, правда, есть) пытался отговорить
от аж четырёх оффисных предложений.
Мне кажется, что Вы просто цену себе набиваете. Нет?
← →
Плохиш © (2008-06-13 23:57) [17]
> Опытный пользователь ПК, ан.яз., MS Office знание комплектующих,
> программирование: Delphi, C/C++, HTML... Быстрая обучаемость.
> .. Образование: высшее неоконченное... Не посоветуете чего-
> нибудь?
Спасибо, мне сантехник не нужен.
← →
Игорь Шевченко © (2008-06-14 01:02) [18]Плохиш © (13.06.08 23:57) [17]
Да ты и не в Москве, ездить на работу каждый день далековато будет.
← →
Германн © (2008-06-14 01:29) [19]
> Плохиш © (13.06.08 23:57) [17]
> Игорь Шевченко © (14.06.08 01:02) [18]
Купились на развод?
← →
Германн © (2008-06-14 02:03) [20]Пардон.
В данном случае меня подвёл метод чтения.. :(
← →
Илья Корстин © (2008-06-14 06:53) [21]Я вот одного не понимаю. Студентами никто из вас не был?
← →
korneley © (2008-06-14 08:25) [22]
> Илья Корстин © (14.06.08 06:53) [21]
Некоторые, только курсантами :) Имхо, говорить надо не о "знании" Delphi/C etc., а об опыте создания чего-нибудь путного. Дельфи и си сегодня "знает" любой, у кого два раза по 21 день нашлось... Что, видимо, и говорит о "быстрой обучаемости" :)))
← →
Илья Корстин © (2008-06-14 09:37) [23]Да я больше про то, что человек еще студент, пока не знает как себя подать :) Не стоит просто быть такими жестокими.
← →
korneley © (2008-06-14 10:06) [24]
> Илья Корстин © (14.06.08 09:37) [23]
> Да я больше про то, что человек еще студент, пока не знает
> как себя подать :) Не стоит просто быть такими жестокими.
>
Ему и помогают. Правда, может, не так, как он жидал :)
← →
имя (2008-06-14 10:34) [25]Удалено модератором
← →
Пробегал2.... (2008-06-14 10:43) [26]AEN (13.06.08 18:11)
Опытный пользователь ПК, ан.яз., MS Office знание комплектующих, программирование: Delphi
Где здесь ошибка?procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Caption := "Где здесь ошибка?" ;
end;
P.S. Народ, спрашиваю автора.
← →
isasa © (2008-06-14 12:45) [27]Не, ну зачем так свирепствовать.
Плохой стиль и ошибки, разные вещи.
После одного - двух сексов с переименованием это проходит ...
← →
McSimm © (2008-06-14 12:50) [28]
> Плохой стиль и ошибки, разные вещи.
Здесь ошибка
← →
Тын-Дын © (2008-06-14 13:14) [29]
> Где здесь ошибка?
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> Form1.Caption := "Где здесь ошибка?" ;
> end;
Здесь нет ошибки.
← →
McSimm © (2008-06-14 13:28) [30]
> Здесь нет ошибки.
Спор ради спора ? Можно доказывать и это. Только для частных случаев.
А на собеседовании лучше будет ответить какая здесь грубая ошибка.
← →
No_Dead © (2008-06-14 13:32) [31]Удалено модератором
Примечание: да
← →
oxffff © (2008-06-14 13:47) [32]
> McSimm © (14.06.08 12:50) [28]
>
> > Плохой стиль и ошибки, разные вещи.
>
> Здесь ошибка
Здесь ничего не приводит к ошибке.
← →
Тын-Дын © (2008-06-14 14:09) [33]
> А на собеседовании лучше будет ответить какая здесь грубая
> ошибка.
Так какая же здесь ошибка. Всё-таки?
ну нет здесь никаких проблем.
То, что используется префикс Form1, не является ошибкой. Более того, это даже не является какой-либо стилевой ошибкой.
← →
McSimm © (2008-06-14 14:16) [34]Это не префикс, а переменная. Указатель.
Возможно он действительно указывает на экземпляр класса TForm1. Более того, бывает даже, что он указывает именно на тот экземпляр класса, который надо. И в этом случае код действительно не приведет к ошибке.
Но на программиста работу с таким кодом я бы не взял.
← →
DVM © (2008-06-14 14:23) [35]
> Пробегал2.... (14.06.08 10:43) [26]
> McSimm © (14.06.08 14:16) [34]
a := 5;
Где здесь ошибка?
Может лучше задачу формулировать правильно, чем искать проблемы на пустом месте? Вот такие и пишут вопросы в тестах из за которых руководствуясь здравым смыслом тест проваливают люди вполне компетентные. А все потому, что тест не подразумевает обсуждения, а подразумевает лишь выбор правильного ответа.
← →
DVM © (2008-06-14 14:26) [36]А я бы не взял на работу буквоеда, который будет неделю обсасывать 10 строчек программы, пытаясь их привести к идеальному со всех точек зрения виду вместо того, чтобы выполнить работу в срок, пусть и не столь идеально. Клиенту оно пофиг, как там внутри все устроено, надо чтобы работало.
← →
oxffff © (2008-06-14 14:28) [37]
> McSimm © (14.06.08 14:16) [34]
А что есть принципиальная разница что экземпляр должен быть класса Tform1. Что только у него есть caption?
Как ты можешь судить не имея условий задачи.
Даже если он будет Tform1.
И явное указание объекта не является ошибкой.
Почему ты например не рассматриваешь вариант, что экземпляров Tform1 может быть >1, а менять caption нужно только у экземпляра form1.
В силу этих фактов ждем доказательства McSimm © (14.06.08 12:50) [28]?
> Но на программиста работу с таким кодом я бы не взял.
Марку своего звездолета не подскажешь?
← →
McSimm © (2008-06-14 14:30) [38]
> DVM © (14.06.08 14:23) [35]
Не тот случай.
Использование внешнего указателя на себя же внутри метода объекта - достаточно очевидная и грубая ошибка.
Подобные ошибки достаточно распространены. Что будет когда вы создадите второй экземпляр TForm1 ?
Ради спора можно доказывать, что в приведенном коде возможно имелся в виду совсем другой Form1 и его капшин. Но это или из желания поспорить или ради отмазки.
← →
Тын-Дын © (2008-06-14 14:30) [39]
> McSimm © (14.06.08 14:16) [34]
> Это не префикс, а переменная. Указатель.
>
> Возможно он действительно указывает на экземпляр класса
> TForm1. Более того, бывает даже, что он указывает именно
> на тот экземпляр класса, который надо. И в этом случае код
> действительно не приведет к ошибке.
>
> Но на программиста работу с таким кодом я бы не взял.
Это исключительно субъективное суждение.
Такое же, когда некоторые не переваривают буквы "goto" даже на слух.
но это их личные проблемы, зашоренность и преклонение перед авторитетами.
← →
McSimm © (2008-06-14 14:33) [40]
> Клиенту оно пофиг, как там внутри все устроено, надо чтобы
> работало.
Не знаю как у других, а у нас коллектив среднего размера и проекты (хоть это и не Делфи) в коллективной разработке. Косяки одного из программиста становятся неприятностями и для клиента в конце концов, даже если сначала работало.
← →
Тын-Дын © (2008-06-14 14:33) [41]
> McSimm © (14.06.08 14:30) [38]
>
> > DVM © (14.06.08 14:23) [35]
>
> Не тот случай.
> Использование внешнего указателя на себя же внутри метода
> объекта - достаточно очевидная и грубая ошибка.
Максим, ну не является это ошибкой. Тем более очевидной.
Нет конкретики в задании, а только общие предположения.
Если Form1 - экземпляр TForm1, то можно рассматривать, как ошибку. А если нет?
← →
McSimm © (2008-06-14 14:36) [42]
> Тын-Дын © (14.06.08 14:30) [39]
> Это исключительно субъективное суждение.
В какой его части ?
В том что это не префикс, а указатель?
Или что он может не равняться self через две недели разработки ?
← →
DVM © (2008-06-14 14:37) [43]
> Ради спора можно доказывать, что в приведенном коде возможно
> имелся в виду совсем другой Form1 и его капшин. Но это или
> из желания поспорить или ради отмазки.
Надо было просто написать:
var
Form1: TForm1;
....
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Caption := "Где здесь ошибка?" ;
end;
Но в любом случае ошибки тут нет, есть лишь пример плохо написанного кода, не более.
← →
DVM © (2008-06-14 14:39) [44]
> McSimm ©
кстати, каков ваш вариант строки Form1.Caption := "Где здесь ошибка?" ; ???
← →
Riply © (2008-06-14 14:44) [45]> [26] Пробегал2.... (14.06.08 10:43)
> Где здесь ошибка?
Я бы завалила собеседование, потому что
искала бы (не знаю как назвать) "реальную" ошибку, а не "потенциальную" :(
← →
@!!ex © (2008-06-14 14:44) [46]Вопрос не корректен. Соответственно и ответ не очевиден.
Что ошибочного в присвоении некоторой переменной значения?
Если есть какие-то дополнительные условия, то надо их указывать отдельно.
В приведенном коде ошибок нет.
← →
DVM © (2008-06-14 14:46) [47]
> Form1.Caption := "Где здесь ошибка?" ;
Может Form1 это вообще имя модуля, а Caption это глобальная переменная в этом модуле.
← →
oxffff © (2008-06-14 14:47) [48]Уважаемые а вы представляете как много таких вопросов в университетах, о тестах я вообще молчу.
← →
Тын-Дын © (2008-06-14 14:47) [49]
> Но в любом случае ошибки тут нет, есть лишь пример плохо
> написанного кода, не более.
> @!!ex © (14.06.08 14:44) [46]
В случае, если Form1 - экземпляр реализуемого класса, для получения конкретной ошибки достаточно вынести класс с реализацией в отдельный модуль.
← →
oxffff © (2008-06-14 14:47) [50]
> DVM © (14.06.08 14:46) [47]
>
> > Form1.Caption := "Где здесь ошибка?" ;
>
> Может Form1 это вообще имя модуля, а Caption это глобальная
> переменная в этом модуле.
[37]
← →
McSimm © (2008-06-14 14:52) [51]Я дкмаю, всем смотревшим пример было понятно, что метод меняет капшин собственного класса. Все остальное придирки и отмазки, которые вполне можно вернуть проводящему собеседование после объяснения где ошибка.
> кстати, каков ваш вариант строки Form1.Caption := "Где здесь
> ошибка?" ; ???
Мой ответ мог быть таким.
"Я понял вопрос, нельзя ссылаться на поля и методы класса через внешнюю ссылку, здесь надо использовать прямое обращение к свойству Caption или иногда можно использовать Self, если возможна неоднозначность при чтении кода."
Опционально:
" Но ваш код может быть и правильным, например Form1 вовсе не указатель на собственный экземпляр"
← →
DVM © (2008-06-14 14:52) [52]
> Тын-Дын © (14.06.08 14:47) [49]
> для получения конкретной ошибки достаточно
Для получения ошибки проще вместо := поставить = или кавычки убрать. Никто же не спрашивает, что надо сделать для получения ошибки, спрашивают какие ошибки есть в этом коде. А их там нет. И компилятор с этим согласен.
← →
DVM © (2008-06-14 14:54) [53]
> McSimm © (14.06.08 14:52) [51]
> или иногда можно использовать Self
с ним может быть еще больше проблем ибо он может быть вообще nil, может быть другого типа и у него может не быть Caption в общем случае.
← →
@!!ex © (2008-06-14 14:54) [54]> В случае, если Form1 - экземпляр реализуемого класса, для
> получения конкретной ошибки достаточно вынести класс с реализацией
> в отдельный модуль.
Если, если если... Что если? Почему этого "если", нет в вопросе?
"Если бы, да кабы..."
← →
McSimm © (2008-06-14 14:56) [55]
> И компилятор с этим согласен.
Компилятор очень легко уговорить, но он не всегда знает, что имеет в виду программист.
Потом вопросы "Почему не работает" именно с этой неошибкой улетают из основной в "Начинающим". Чаще всего, правда, такой "косяк" возникает с Form2 и больше.
← →
@!!ex © (2008-06-14 14:56) [56]> Я дкмаю, всем смотревшим пример было понятно, что метод
> меняет капшин собственного класса.
Лично мне было понятно, что метод меняет кэпшн некой формы.
Все. Больше из вопроса ничего не понятно.
Домыслы о том, что лично вам понятно - не надо выдавать за общее мнение.
← →
DVM © (2008-06-14 14:59) [57]Все же мое мнение, этот вопрос либо вообще для полного новичка, который скажет, что ошибок там нет и будет прав, тем самым подтвердит свой новичковский уровень, либо для более продвинутого, если он начнет дебаты по этому поводу с тем кто вопрос задал. Хотя спор на собеседовании мне кажется только навредит.
← →
oxffff © (2008-06-14 15:01) [58]
> с ним может быть еще больше проблем ибо он может быть вообще
> nil, может быть другого типа и у него может не быть Caption
> в общем случае.
А это как?
← →
DVM © (2008-06-14 15:03) [59]
> А это как?
Тьфу ты, я писал про Sender, а не про Self
← →
McSimm © (2008-06-14 15:03) [60]
> спор на собеседовании мне кажется только навредит.
Я провожу собеседования довольно много. В моем случае не навредит, если покажет, что человек знает больше чем ответ на заданный вопрос. Часто и я с удовольствием узнаю что-то во время собеседований.
Если это не попытка свалить свое непонимание на якобы неоднозначность вопроса, которая имеено его и сбила с толку, а на самом деле он все это понимает и т.п.
← →
Тын-Дын © (2008-06-14 15:04) [61]
> oxffff © (14.06.08 15:01) [58]
>
> > с ним может быть еще больше проблем ибо он может быть
> вообще
> > nil, может быть другого типа и у него может не быть Caption
>
> > в общем случае.
>
>
> А это как?
Это к кому вопрос?
← →
Тын-Дын © (2008-06-14 15:07) [62]
> @!!ex © (14.06.08 14:54) [54]
> > В случае, если Form1 - экземпляр реализуемого класса,
> для
> > получения конкретной ошибки достаточно вынести класс с
> реализацией
> > в отдельный модуль.
>
> Если, если если... Что если? Почему этого "если", нет в
> вопросе?
Ответить почему? - Потому.
Потому что при собеседовании не ожидается ответа "Да" или "Нет".
Как правило, ожидается пониманиеЮ а не констатация фактов.
← →
DVM © (2008-06-14 15:07) [63]
> Тын-Дын © (14.06.08 15:04) [61]
> Это к кому вопрос?
это мне, я попутал.
← →
oxffff © (2008-06-14 15:07) [64]
>
> Это к кому вопрос?
Не к вам.
← →
McSimm © (2008-06-14 15:08) [65]
> Как правило, ожидается понимание, а не констатация фактов.
100%
← →
DVM © (2008-06-14 15:09) [66]
> McSimm © (14.06.08 15:03) [60]
> В моем случае не навредит, если покажет, что человек знает
> больше чем ответ на заданный вопрос
В моем тоже, но вот бывает на собеседовании сидят такие фрукты, что лучше не спорить. У них на лице написано "Истина в последней инстанции"
← →
oxffff © (2008-06-14 15:09) [67]Ребята предлагаю остановится.
← →
@!!ex © (2008-06-14 15:12) [68]> Потому что при собеседовании не ожидается ответа "Да" или
> "Нет".
> Как правило, ожидается пониманиеЮ а не констатация фактов.
Где здесь ошибка?
15X=0
X=O
← →
@!!ex © (2008-06-14 15:12) [69]Чорт. Неправильно написал. надо так:
15X=O
X=O
← →
DVM © (2008-06-14 15:14) [70]
> @!!ex © (14.06.08 15:12) [69]
тут ошибок бесконечное количество, зависит от того кто как понял
← →
oxffff © (2008-06-14 15:17) [71]
> Где здесь ошибка?
>
> 15X=0
> X=O
С++?
← →
oxffff © (2008-06-14 15:20) [72]
> Где здесь ошибка?
>
> 15X
The following characters are legal as the first character of an identifier, or any subsequent character:
Copy Code
_ a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
← →
@!!ex © (2008-06-14 15:30) [73]> [70] DVM © (14.06.08 15:14)
О чем и речь. :)
> [71] oxffff © (14.06.08 15:17)
Нет. Первое - уравнение, второе - решение.
← →
AndreyV © (2008-06-14 15:35) [74]> [69] @!!ex © (14.06.08 15:12)
X=O/15
← →
@!!ex © (2008-06-14 15:43) [75]> [74] AndreyV © (14.06.08 15:35)
Это решение системы уравнений.
А там одно уравнение и ответ на него.
Это же очевидно! ;)
А все кто подумал по другому - либо ньюбы в математике 6 класса, либо отмазываются.
Ну не бред ли?
Господа, учитесь правильно задавать вопросы.
Ссылка есть у Анатолия.
← →
McSimm © (2008-06-14 16:04) [76]
> Ну не бред ли?
он самый
← →
Milk (2008-06-14 16:20) [77]Мастера, а не забыли ли Вы
о ищу работу
AEN (13.06.08 18:11).
Даже независимо от того, что эта ветка находится в "Потрепаться". Открывайте свои интересные ветки, и, пожалуйста, не "долбите" в ветки, кем то умышленно переведенные в сторону от поста автора (это просто стыдно).
← →
oxffff © (2008-06-14 16:43) [78]
> @!!ex © (14.06.08 15:30) [73]
> > [70] DVM © (14.06.08 15:14)
>
> О чем и речь. :)
>
>
> > [71] oxffff © (14.06.08 15:17)
>
> Нет. Первое - уравнение, второе - решение.
Ты что куришь?
У тебя там буква O, а не ноль.
← →
ketmar © (2008-06-14 16:57) [79]>[23] Илья Корстин © (2008-06-14 09:37:00)
>Да я больше про то, что человек еще студент, пока не знает как себя подать
а мы тут «бюро добрых услуг с подлизыванием ануса», да? не знает — пусть узнаёт. наши проблемы, что он не знает, что ли? он же не просил помочь более-менее вменяемо оформить резюме, а выложил свой бред. мусор на входе — мусор на выходе.
>[36] DVM © (2008-06-14 14:26:00)
>вместо того, чтобы выполнить работу в срок, пусть и не столь идеально
не надо «идеально». достаточно «качественно». если человек отвечает «в приведённом коде нет ошибки», то он рядом с качеством даже не стоял.
>[41] Тын-Дын © (2008-06-14 14:33:00)
>Максим, ну не является это ошибкой.
является. не являлось бы, если бы были заданы более точные условия. в любом другом случае надо предполагать худшее.
>[51] McSimm © (2008-06-14 14:52:00)
>Я дкмаю, всем смотревшим пример было понятно, что метод меняет капшин
>собственного класса
мне — нет. libthelepaty сглючило.
>[52] DVM © (2008-06-14 14:52:00)
>спрашивают какие ошибки есть в этом коде. А их там нет. И компилятор с этим
>согласен.
понимать так, что если компилятор скомпилировал, то в коде ошибок нет? слушай, поделись таким компилятором. я тогда gdb снесу — зачем gdb с таким компилятором-то?
>[77] Milk (2008-06-14 16:20:00)
>Мастера, а не забыли ли Вы
мы и не вспоминали. топикстартер задал вопрос в идиотской форме, обсуждать идиотию неинтересно.
---
All Your Base Are Belong to Us
← →
DVM © (2008-06-14 17:15) [80]
> ketmar © (14.06.08 16:57) [79]
> если человек отвечает «в приведённом коде нет ошибки», то
> он рядом с качеством даже не стоял.
В приведенном коде ошибок нет. Про то, насколько код хорош изначально никто не спрашивал. Каков вопрос, таков и ответ.
> понимать так, что если компилятор скомпилировал, то в коде
> ошибок нет? слушай, поделись таким компилятором. я тогда
> gdb снесу — зачем gdb с таким компилятором-то?
Тебе он не поможет. Да и небесплатный он.
← →
ketmar © (2008-06-14 17:36) [81]>[80] DVM © (2008-06-14 17:15:00)
>В приведенном коде ошибок нет
бугога. в a = 5; b = intrand(0); c = a/b; тоже ошибок нет. по крайней мере с точки зрения транслятора. это значит, что в коде ошибок нет вовсе?
я надеюсь, ты пишешь софт, который не выходит на публику. а если выходит — скажи, чтобы я мог посоветовать знакомым, что покупать не надо.
---
All Your Base Are Belong to Us
← →
DVM © (2008-06-14 18:02) [82]
> бугога. в a = 5; b = intrand(0); c = a/b; тоже ошибок нет.
> по крайней мере с точки зрения транслятора. это значит,
> что в коде ошибок нет вовсе?
Та чушь и в том виде, которую ты написал скомпилирована не будет. Код выше, о котором идет речь - будет.
> я надеюсь, ты пишешь софт, который не выходит на публику.
> а если выходит — скажи, чтобы я мог посоветовать знакомым,
> что покупать не надо.
Ну ну.
← →
Riply © (2008-06-14 18:47) [83]> Offtop
Сразу оговорюсь: ни на кого не намекаю и никого конктерно не имею ввиду. Просто общие рассуждения.
Вот собрались люди, увлеченные программированием и с интелектом ну уж всяко не ниже среднего :)
Почему же даже здесь, у нас, споры по программированию, не редко заканчиваются "переходом на личности" ?
Ведь все же великолепно понимают, что это (переход на личности) не делает аргумент более убедительным :)
> Offtop end
← →
Zeqfreed © (2008-06-14 19:11) [84]> Riply © (14.06.08 18:47) [83]
Зато делает дискуссию более интересной ;)
← →
Юрий Зотов © (2008-06-14 19:35) [85]О, да! Ничто не может быть интереснее, чем обозвать оппонента.
И ведь это действительно люди "с интелектом ну уж всяко не ниже среднего". Грустно как-то...
← →
Kostafey © (2008-06-14 21:07) [86]>
> [0] AEN (13.06.08 18:11)
Хех. Советовать-то?
Ставить цель.
repeat
Оббивать_пороги;
until success_is_true;
:)
← →
Renegat (2008-06-14 21:31) [87]> [86] Kostafey © (14.06.08 21:07)
А вы точно уверены в конечности данного цикла? %)
← →
@!!ex © (2008-06-14 21:35) [88]> [86] Kostafey © (14.06.08 21:07)
Я бы через функциб и while сделал...
while not Обивание_порога_успешно do ;
← →
@!!ex © (2008-06-14 21:36) [89]и, кстати, этот цикл должен быть бесконечным. Даже если нашел работу, нужно продолжать искать, вдруг чего получше появится.
← →
Kostafey © (2008-06-14 21:51) [90]> [87] Renegat (14.06.08 21:31)
Да я вообще ни в чем не уверен последнее время :)
> [88] @!!ex © (14.06.08 21:35)
> Я бы через функциб и while сделал...
Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). (с) Википедия
А нам нужно, чтобы цикл выполнился хотя бы раз:
Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. (с) Википедия
Так что с филосовской точки зрения Цикл с постусловием более подходит
в данной ситуации :)
> [89] @!!ex © (14.06.08 21:36)
Черт! Я не предусмотрел эту возможность.
Опять весь код перелопачивать :)
← →
isasa © (2008-06-14 22:12) [91]Milk (14.06.08 16:20) [77]
А чем руководствовался топикстартер, посылая сюда пост?
В раздел потрепаться.
Именно потрепаться, а не потрепаться о работе ...
Вот счас все брошу и ...
← →
Renegat (2008-06-14 22:35) [92]> [90] Kostafey © (14.06.08 21:51)
> [89] @!!ex © (14.06.08 21:36)
Вот чуть более проработанный алгос =)PUSHAD
XOR ESI, ESI
MOV EDI, Макс_кол-во_попыток
@loop:
PUSH Резюме
PUSH OFFSET Запрос_рабочего_места
CALL Оббить_следующий_порог
TEST EAX, EAX
JE @loop
TEST EAX, ESI
JGE @skip
SUB EDI, 1
JL @quit
JMP @loop
@skip:
MOV EDI, Макс_кол-во_попыток
MOV ESI, EAX
MOV EBX, Запрос_рабочего_места
JMP @loop
@quit:
PUSH EBX
CALL Возрадоваться
POPAD
RET
← →
ProgRAMmer Dimonych © (2008-06-14 22:47) [93]> Renegat (14.06.08 22:35) [92]
Всё равно не выполняется пожелание
> @!!ex © (14.06.08 21:36) [89]
Вот оно по-нашему, по-неучёному... :)JobSearch:=FindFirstJob(@NecessaryConditions);
while FProgrammerAlive do
begin
Job:=FindNextJob(JobSearch);
ProcessJob(Job);
end;
FindJobClose(JobSearch);
PutIntoGrave(Self);
Halt;
Пессимистично, но реалистично :)
← →
DVM © (2008-06-14 22:47) [94]
> Renegat (14.06.08 22:35) [92]
Для более эффективного поиска работы надо под SSE заточить :)
← →
DVM © (2008-06-14 22:49) [95]
> ProgRAMmer Dimonych © (14.06.08 22:47) [93]
FindFirstJob несовременно. Надо EnumJobs() + функция обратного вызова :)
← →
Игорь Шевченко © (2008-06-14 22:49) [96]И все-таки метлу
← →
Тын-Дын © (2008-06-14 22:50) [97]
> isasa © (14.06.08 22:12) [91]
> Milk (14.06.08 16:20) [77]А чем руководствовался топикстартер,
> посылая сюда пост?
А чем руководствовался Розыч, когда писал сбюда объявление о вакансии?
← →
Kostafey © (2008-06-14 22:52) [98]> [92] Renegat (14.06.08 22:35)
жестко :]
> [93] ProgRAMmer Dimonych © (14.06.08 22:47)
> PutIntoGrave(Self);
улыбнуло :)
self.destroy();
:)
← →
ProgRAMmer Dimonych © (2008-06-14 22:57) [99]> Kostafey © (14.06.08 22:52) [98]
> > [93] ProgRAMmer Dimonych © (14.06.08 22:47)
> > PutIntoGrave(Self);
> улыбнуло :)
> self.destroy();
> :)
Не... Ну, не... Не по-христьянски ето. Останки должны быть преданы земле, а Destroy() - это развеять прах в чистом поле... :)
← →
isasa © (2008-06-14 23:00) [100]Тын-Дын © (14.06.08 22:50) [97]
А чем руководствовался Розыч, когда писал сбюда объявление о вакансии?
Ну дак, его тут многие знают ...
← →
Игорь Шевченко © (2008-06-14 23:01) [101]
> А чем руководствовался Розыч, когда писал сбюда объявление
> о вакансии?
Очевидно не до конца изжил в себе наивность
← →
Anatoly Podgoretsky © (2008-06-14 23:20) [102]> Тын-Дын (14.06.2008 22:50:37) [97]
Наивный
← →
Плохиш © (2008-06-15 14:09) [103]
> McSimm © (14.06.08 14:52) [51]
Поздравляю, ты сразу столько сантехников вывел на чистую воду :-)
← →
Плохиш © (2008-06-15 14:13) [104]
> DVM © (14.06.08 14:52) [52]
> спрашивают какие ошибки есть в этом коде. А их там нет.
> И компилятор с этим согласен.
Ошибки бывают не только синтаксические. Если сантехник не с той прокладкой трубы соединит, то никакой компилятор ошибки не покажет, только будет поздно, когда газ включат...
PS. Оказывается на чистую воду вывели сантехников-недоучек...
← →
Тын-Дын © (2008-06-15 14:16) [105]
> Плохиш © (15.06.08 14:09) [103]
> > McSimm © (14.06.08 14:52) [51] Поздравляю, ты сразу
> столько сантехников вывел на чистую воду :-)
Ну это тебе близко и знакомо. никто же не спорит-)
← →
Kostafey © (2008-06-15 18:51) [106]Да, а ведь реально ошибочный код. Даже не компилируется :)
prоcеdurе TFоrm1.Buttоn1Click(Sеndеr: ТОbject);
bеgin
Fоrm1.Cарtiоn := "Где здесь ошибка?" ;
еnd;
← →
DVM © (2008-06-15 20:31) [107]
> Плохиш © (15.06.08 14:13) [104]
> Ошибки бывают не только синтаксические.
Да ну! Я и не знал. Насчет сантехников ты прав, теперь я знаю кто они.
← →
Style © (2008-06-16 01:40) [108]
> Опытный пользователь ПК, ан.яз., MS Office знание комплектующих,
> программирование: Delphi, C/C++, HTML... Быстрая обучаемость.
> .. Образование: высшее неоконченное... Не посоветуете чего-
> нибудь?
>
на джоблисте или хеадхантере полно вакансий - напиши нормальное резюме и рассылай всем. А тут тебя с руками ногами на работу не возьмут. )
← →
AndreyV © (2008-06-16 08:39) [109]Про сантехников.
Около года назад видел в какой-то передаче сюжет о массовой переквалификации английских программистов в сантехники. Якобы, первых стали обижать зарплатой, а у вторых, напротив, доходы стабильно растут.
Вот, за что купил...
← →
isasa © (2008-06-16 10:32) [110]Плохиш © (15.06.08 14:13) [104]
Ошибки бывают не только синтаксические.
Окако, отношение несинтаксических ошибок именно к языку программирования, на котором написани программуля, требует доказательств.
← →
isasa © (2008-06-16 10:40) [111]:)
Тут просто хочется затать вопрос.
А имеет ли право автор программы из всего множества объестов класса TForm1 в данном методе присваивать Caption только объекту Form1.
Даже таким извращенным способом?
Мне, почему-то хочется ответить - имеет, т.к. это будет работать.
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Caption := "Где здесь ошибка?" ;
end;
← →
Плохиш © (2008-06-16 10:42) [112]
> isasa © (16.06.08 10:32) [110]
> Плохиш © (15.06.08 14:13) [104]
>
> Ошибки бывают не только синтаксические.
>
> Окако, отношение несинтаксических ошибок именно к языку
> программирования, на котором написани программуля, требует
> доказательств.
Если это мне, то я в этой фразе нифига не понял.
← →
oxffff © (2008-06-16 10:49) [113]
> isasa © (16.06.08 10:40) [111]
> :)
> Тут просто хочется затать вопрос.
> А имеет ли право автор программы из всего множества объестов
> класса TForm1 в данном методе присваивать Caption только
> объекту Form1.
> Даже таким извращенным способом?
Я об этом написал в [37].
А что есть другой способ присвоить конкретному объекту form1 заголовок?
Почему этот способ извращенный в данном контексте?
← →
isasa © (2008-06-16 10:50) [114]Плохиш © (16.06.08 10:42) [112]
Если это мне, то я в этой фразе нифига не понял.
Ладно, будем проще.
Если ошибка несинтаксическая, то докажи, что она имеет отношение к языку программирования
← →
Плохиш © (2008-06-16 10:52) [115]
> isasa © (16.06.08 10:40) [111]
> :)
> Тут просто хочется затать вопрос.
> А имеет ли право автор программы из всего множества объестов
> класса TForm1 в данном методе присваивать Caption только
> объекту Form1.
Ну скажем, для начала, что Form1 - это не объект.
Если у автора этого кода в резюме будет написано про знания ООП, то дальше он даже рассматриваться не будет...
← →
isasa © (2008-06-16 11:02) [116]Плохиш © (16.06.08 10:52) [115]
Ну скажем, для начала, что Form1 - это не объект.
Надеюсь, что против термина "єкземпляр класса" ты не возражаешь?
← →
isasa © (2008-06-16 11:07) [117]Плохиш © (16.06.08 10:52) [115]
Если у автора этого кода в резюме будет написано про знания ООП, то дальше он даже рассматриваться не будет..
А вот интересно, сколько людей используют ссылки типа
mainForm.StatusBar ...
в дочерных формах. И за что же такая дискриминация Form1. :)
← →
Игорь Шевченко © (2008-06-16 11:11) [118]Точка зрения компилятор и точка зрения работодателя - это две разные точки зрения.
Например, если соискатель принесет такой код, верный с точки зрения компилятора:procedure TEdOrderForm.Enter;begin
MastData.OrdersSource.OnStateChange :=
OrdersSourceStateChange;try MastData.
Orders.Open;MastData.Orders.Insert;
ShowModal;finally
MastData.OrdersSource.OnStateChange
:= nil;
end;end;procedure TEdOrderForm.Edit
(OrderNo: Double);begin MastData.
OrdersSource.OnStateChange :=
OrdersSourceStateChange;try MastData.
Orders.Open;MastData.Orders.Locate
("OrderNo", OrderNo, []);ShowModal;finally
MastData.OrdersSource.OnStateChange
:= nil;end;end;
{Event Handlers}{ These two methods
enable the navigators to service both
the Orders and Items tables by switching
the ActiveSource between them. }procedure
TEdOrderForm.ItemsGridEnter(Sender: TObject);
begin ActiveSource.Dataset := MastData.
Items;end;
procedure TEdOrderForm.ItemsGridExit(Sender:
TObject);begin ActiveSource.Dataset
:= MastData.Orders;end;
То разговора с соискателем не получится вовсе
← →
isasa © (2008-06-16 11:15) [119]Игорь Шевченко © (16.06.08 11:11) [118]
Точка зрения компилятор и точка зрения работодателя - это две разные точки зрения.
Например, если соискатель принесет такой код
:)
Какой милый телеграфный стиль.
Все равно компилятор все пробелы выбрасывает. Впрочем, это на любителя ...
← →
oxffff © (2008-06-16 11:16) [120]
> Плохиш © (16.06.08 10:52) [115]
Вас что не устраивает?
Хотите так?
if assigned(form1) then Form1.Caption := "Где здесь ошибка?" ;
Однако автор программы может гарантировать существование объекта form1
(для простоты я опускаю фраза указатель на экземпляр класса) на момент вызова ButtonClick у любого из экземпляров.
Автор это сделал из соображений скорости.
А во всем остальном ваша попытка приплести сюда ссылочную семантику отношения не имеет.
← →
oxffff © (2008-06-16 11:22) [121]
> Игорь Шевченко © (16.06.08 11:11) [118]
..
> То разговора с соискателем не получится вовсе
В вашем случае да. Однако найдется человек, который ищет таких кандидатов. Попробуйте опровергнуть.
← →
Плохиш © (2008-06-16 11:26) [122]
> isasa © (16.06.08 10:50) [114]
Зачем я буду доказывать то, что здесь ни я, ни кто другой не говорил?
← →
Плохиш © (2008-06-16 11:28) [123]
> isasa © (16.06.08 11:02) [116]
> Плохиш © (16.06.08 10:52) [115]
>
> Ну скажем, для начала, что Form1 - это не объект.
>
> Надеюсь, что против термина "єкземпляр класса" ты не возражаешь?
Form1 - это и не "єкземпляр класса", Form1 - это обычная переменная в программе и ничего больше.
← →
Плохиш © (2008-06-16 11:29) [124]
> oxffff © (16.06.08 11:16) [120]
>
> > Плохиш © (16.06.08 10:52) [115]
>
>
> Вас что не устраивает?
> Хотите так?
> if assigned(form1) then Form1.Caption := "Где здесь ошибка?" ;
Вы можете маразмом страдать сколько угодно.
← →
isasa © (2008-06-16 11:31) [125]Плохиш © (16.06.08 11:26) [122]
Зачем я буду доказывать то, что здесь ни я, ни кто другой не говорил?
Вот те раз.
Было сказано, что фрагмент
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Caption := "Где здесь ошибка?" ;
end;
содержит несинтаксическую ошибку.
Но он компилируется и работает, при соблюдении определенных условий.
Если он работает, где ошибка?
← →
isasa © (2008-06-16 11:33) [126]Плохиш © (16.06.08 11:28) [123]
Form1 - это и не "єкземпляр класса", Form1 - это обычная переменная в программе и ничего больше.
Когда нам выгодно, мы вспоминаем ООП, а когда нет, то его нет.
Можно подумать, что Form1 имеет тип pointer
← →
Плохиш © (2008-06-16 11:33) [127]
> isasa © (16.06.08 11:31) [125]
И кто говорил, что там ошибка языка программирования?
← →
isasa © (2008-06-16 11:35) [128]Плохиш © (16.06.08 11:33) [127]
И кто говорил, что там ошибка языка программирования?
"Так мы никогда не кончим" (с)
Если он компилируется и правильно работает, где ошибка?
В терминологии ошибок?
← →
Плохиш © (2008-06-16 11:36) [129]
> isasa © (16.06.08 11:33) [126]
> Когда нам выгодно, мы вспоминаем ООП, а когда нет, то его
> нет.
опять какая-то загадка
> Можно подумать, что Form1 имеет тип pointer
Про тип переменной Form1 в этой ветке ещё не говорилось ;-)
← →
oxffff © (2008-06-16 11:36) [130]
> Плохиш © (16.06.08 11:29) [124]
>
> > oxffff © (16.06.08 11:16) [120]
> >
> > > Плохиш © (16.06.08 10:52) [115]
> >
> >
> > Вас что не устраивает?
> > Хотите так?
> > if assigned(form1) then Form1.Caption := "Где здесь ошибка?
> " ;
>
> Вы можете маразмом страдать сколько угодно.
В данном случае я только указал только на ваш. :)
Будут более убедительные доводы будут?
← →
Игорь Шевченко © (2008-06-16 11:38) [131]похоже, наше отставание в области IT-технологий несколько больше, чем предполагалось...
← →
Плохиш © (2008-06-16 11:39) [132]
> isasa © (16.06.08 11:35) [128]
> Плохиш © (16.06.08 11:33) [127]
> Если он компилируется и правильно работает, где ошибка?
Ты забыл добавить слова из [125] "при соблюдении определенных условий"
Т.к. в общем случае код работает неправильно.
> oxffff © (16.06.08 11:36) [130]
> Будут более убедительные доводы будут?
Все доводы в теории ООП.
← →
isasa © (2008-06-16 11:40) [133]Плохиш © (16.06.08 11:36) [129]
Про тип переменной Form1 в этой ветке ещё не говорилось ;-)
Ага. А по используемому контексту это ни фиги не видно.
Для танкистов надо было написать
var
Form1: TForm1;
...
Form1:=TForm1.Create(....
← →
isasa © (2008-06-16 11:44) [134]:)
Мне вот стало интересно, откуда
Kostafey © (15.06.08 18:51) [106]
приволок эту гадость.
Я чуствую, что лучше бы он спросил про самолет, или подводную лодку ...
← →
isasa © (2008-06-16 11:47) [135]Плохиш © (16.06.08 11:39) [132]
Ты забыл добавить слова из [125] "при соблюдении определенных условий"
Т.к. в общем случае код работает неправильно.
Между прочим, составление исходного кода программы - это тотальное соблюдении определенных условий. Одном больше одним меньше - не принципиально.
← →
Ega23 © (2008-06-16 11:49) [136]
> Ага. А по используемому контексту это ни фиги не видно.
Конечно. Вот объясни, какой идиёт будет в обработчике метода класса TForm1 перед обращением к свойствам-методам класса TForm1 ставить Form1?
А я знаю кто. Студент, который первый раз Delphi увидел пол-года назад. При этом максимум - сделал на нём пару лабораторных (пусть даже целиком и полностью сам) и десяток заданий для семинаров. Ну ещё расчёт курсовика написал.
Но нельзя ведь сказать, что этот человек ЗНАЕТ Delphi?
Хотя вполне может, что действительно за 3-6 месяцев научится и будет сносно в этом разбираться.
← →
oxffff © (2008-06-16 11:52) [137]
> Плохиш © (16.06.08 11:39) [132]
>
> > isasa © (16.06.08 11:35) [128]
> > Плохиш © (16.06.08 11:33) [127]
> > Если он компилируется и правильно работает, где ошибка?
>
>
> Ты забыл добавить слова из [125] "при соблюдении определенных
> условий"
> Т.к. в общем случае код работает неправильно.
>
> > oxffff © (16.06.08 11:36) [130]
> > Будут более убедительные доводы будут?
>
> Все доводы в теории ООП.
Так если мы установили, что ваши претензии - это не использование неинициализированной переменной.
Ваша попытка указать на неустановленный тип переменной form1 мягко говоря странна.
В таком случае причем здесь ООП? Очень ждем ответа.
Сразу задам уточняющий вопрос, что вы под ООП сокращаете?
← →
isasa © (2008-06-16 11:54) [138]Конечно. Вот объясни, какой идиёт будет в обработчике метода класса TForm1 перед обращением к свойствам-методам класса TForm1 ставить Form1?
Это не ошибка, это нарушение принципов программирования с ООП.
"Плохой стиль". Я писал. Это разные вещи.А какие идиоты используют ф формах указатели на mainForm?
Таких программ много. И все работают.
← →
Игорь Шевченко © (2008-06-16 11:59) [139]
> А какие идиоты используют ф формах указатели на mainForm?
если они используют их в методах mainform, то таки да, идиоты
← →
oldman © (2008-06-16 12:00) [140]
> AEN (13.06.08 18:11)
> Опытный пользователь ПК, ан.яз., MS Office
Пошли к нам. (Но - Нижний Новгород)
Работа в больнице.
С документацией. На Office.
Зарплата около 7 тысяч рублей.
Пять рабочих дней, с 8 до 16.
А ТО Я УЖЕ ЗАДОЛБАЛСЯ СЕКРЕТАРШЕЙ РАБОТАТЬ ВМЕСТО ПРОГРАММИРОВАНИЯ!!!
← →
Плохиш © (2008-06-16 12:05) [141]
> oxffff © (16.06.08 11:52) [137]
> Так если мы установили, что ваши претензии - это не использование
> неинициализированной переменной.
То, что ты мелко плаваешь, это я знал и раньше и ещё раз подтверждать это смысла не имело.
> isasa © (16.06.08 11:54) [138]
Ну да, а потом орут, что биллгейтс виноват и винда падает...
← →
Anatoly Podgoretsky © (2008-06-16 12:05) [142]> isasa (16.06.2008 11:02:56) [116]
Буду, поскольку это не экземпляр класса, а переменная которая может содержать экземляр какого то класса, а может и не содержать.
Вот Self это экземпляр класса.
← →
Ega23 © (2008-06-16 12:06) [143]
> Это не ошибка, это нарушение принципов программирования
> с ООП.
Правильно. Можно писать сносные программы на Delphi и не понимать нифига в ООП. Сам такой был. Пока не встала задача написания некоего графического вьюера - сам не понимал этих вещей. Хотя уже год писал на Delphi. Теперь понимаю. И когда другой язык буду "поднимать", то уже таких ляпов не сделаю.
← →
oxffff © (2008-06-16 12:06) [144]
> isasa © (16.06.08 11:54) [138]
> Конечно. Вот объясни, какой идиёт будет в обработчике метода
> класса TForm1 перед обращением к свойствам-методам класса
> TForm1 ставить Form1?
>
> Это не ошибка, это нарушение принципов программирования
> с ООП.
И вы туда же?
Это про какие такие вы принципы нарушения ООП говорите.
Сaption - это Published свойство.
← →
isasa © (2008-06-16 12:07) [145]Игорь Шевченко © (16.06.08 11:59) [139]
если они используют их в методах mainform, то таки да, идиоты
Не, ну это только потому, что в методах этой формы естьдля этих целей
Self (или без префикса).
А в общем случае?
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.Caption := "Где здесь ошибка?" ;
end;
← →
Ega23 © (2008-06-16 12:08) [146]
> Это про какие такие вы принципы нарушения ООП говорите.
> Сaption - это Published свойство.
Да хоть 32 раза published. Form1 - не обязательно экземпляр класса TForm. Замени Form1 на Self - и никаких проблем.
← →
isasa © (2008-06-16 12:10) [147]oxffff © (16.06.08 12:06) [144]
Это про какие такие вы принципы нарушения ООП говорите.
Пожелание о том, что код метода класса не должен ничего "знать" о конкретном экземпляре этого класса.
← →
Anatoly Podgoretsky © (2008-06-16 12:11) [148]> isasa (16.06.2008 11:40:13) [133]
Так этого мало, нигде не видно, что TForm1 создается один раз или несколько.
И нигде не сказано какому экземпляру надо изменить Caption.
← →
isasa © (2008-06-16 12:12) [149]Ega23 © (16.06.08 12:08) [146]
Да хоть 32 раза published. Form1 - не обязательно экземпляр класса TForm. Замени Form1 на Self - и никаких проблем.
:)
"Так мы никогда не кончим" (с)
Так об этом и речь. Это ошибка, или плохой стиль.
← →
oxffff © (2008-06-16 12:12) [150]
> Плохиш © (16.06.08 12:05) [141]
>
> > oxffff © (16.06.08 11:52) [137]
>
>
> > Так если мы установили, что ваши претензии - это не использование
>
> > неинициализированной переменной.
>
> То, что ты мелко плаваешь, это я знал и раньше и ещё раз
> подтверждать это смысла не имело.
Зачем вы все время увиливаете?
Я второй раз вас спрашиваю где нарушение ООП Object Pascal?
Если нужно для всех экземпляров при нажатии устанавливать у конкретного экземпляра form1 свойство caption.
← →
Плохиш © (2008-06-16 12:13) [151]
> isasa © (16.06.08 12:07) [145]
Т.е. можно расценить, что все предыдущие высказывания были твоей реакцией на мой ник? :-)
← →
Плохиш © (2008-06-16 12:15) [152]
> oxffff © (16.06.08 12:12) [150]
Тебе, вроде, уже на этой странице три! раза ответили.
← →
Anatoly Podgoretsky © (2008-06-16 12:15) [153]> isasa (16.06.2008 11:54:18) [138]
А откуда следует, что Form1 имеет тип TForm1 - их-за того что буквы одинаковые?
Что бы это утверждать надо иметь текск программы, а не кусочек из нее.
Может даже оказаться, что Form1 это и не переменная вообще.
← →
Игорь Шевченко © (2008-06-16 12:15) [154]oxffff © (16.06.08 12:12) [150]
> Если нужно для всех экземпляров при нажатии устанавливать
> у конкретного экземпляра form1 свойство caption.
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Caption := "Где здесь ошибка?" ;
end;
У какого экземпляра надо устанавливать ?
← →
oxffff © (2008-06-16 12:15) [155]
> isasa © (16.06.08 12:10) [147]
> oxffff © (16.06.08 12:06) [144]
>
> Это про какие такие вы принципы нарушения ООП говорите.
>
> Пожелание о том, что код метода класса не должен ничего
> "знать" о конкретном экземпляре этого класса.
В ООП нет таких ограничений.
А как же тогда class var, паттерн синглетон.
Идея такая же - shared state.
← →
isasa © (2008-06-16 12:15) [156]Anatoly Podgoretsky © (16.06.08 12:11) [148]
Так этого мало, нигде не видно, что TForm1 создается один раз или несколько.
И нигде не сказано какому экземпляру надо изменить Caption.
Короче. :)
Для того, чтобы найти ошибку - нужно приводить весь текст программы.
Этот код компилируется и ошибки в нем нет.
← →
oxffff © (2008-06-16 12:17) [157]
> Игорь Шевченко © (16.06.08 12:15) [154]
> oxffff © (16.06.08 12:12) [150]
>
>
> > Если нужно для всех экземпляров при нажатии устанавливать
>
> > у конкретного экземпляра form1 свойство caption.
>
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> Form1.Caption := "Где здесь ошибка?" ;
> end;
>
> У какого экземпляра надо устанавливать ?
У shared экземпляра на который ссылается form1.
Здесь нет нарушения ООП.
Где вы здесь нарушаете доступ к закрытым членам?
← →
Ega23 © (2008-06-16 12:17) [158]
> Я второй раз вас спрашиваю где нарушение ООП Object Pascal?
Класс "Пассажирский самолёт ТУ-154М" не должен ничего знать о пассажирском самолёте ТУ-154М с бортовым номером 34567 и базирующимся в Благовещенске.
← →
Anatoly Podgoretsky © (2008-06-16 12:18) [159]> isasa (16.06.2008 12:07:25) [145]
А что такое Form1 в данном случае?
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.Caption := "Где здесь ошибка?" ;
end;
← →
oxffff © (2008-06-16 12:18) [160]
> Плохиш © (16.06.08 12:15) [152]
>
> > oxffff © (16.06.08 12:12) [150]
>
> Тебе, вроде, уже на этой странице три! раза ответили.
От вас я только слышу заявление о якобы нарушении ООП.
Но никто не привел формулировку правила которое нарушено.
Одна только болтовня с вашей стороны. Уж извините.
← →
Anatoly Podgoretsky © (2008-06-16 12:19) [161]> Ega23 (16.06.2008 12:08:26) [146]
Ты тоже ошибаешься, может задача стоит менять Caption именно у Form1, а не у Self
← →
Anatoly Podgoretsky © (2008-06-16 12:20) [162]> oxffff (16.06.2008 12:12:30) [150]
А с чего ты взял, что это экземпляр класса?
← →
oxffff © (2008-06-16 12:21) [163]
> Ega23 © (16.06.08 12:17) [158]
>
> > Я второй раз вас спрашиваю где нарушение ООП Object Pascal?
>
>
>
> Класс "Пассажирский самолёт ТУ-154М" не должен ничего знать
> о пассажирском самолёте ТУ-154М с бортовым номером 34567
> и базирующимся в Благовещенске.
Страница в Г. Буч где об этом говорится?
← →
isasa © (2008-06-16 12:23) [164]Anatoly Podgoretsky © (16.06.08 12:18) [159]
А что такое Form1 в данном случае?
Ну, компилятор сначала пошлет с сообщением о необъявленной переменной Form1, ну а дальше сожрет исходник с объявленной переменной Form1 любого класса где есть свойство Caption не ниже public
← →
oxffff © (2008-06-16 12:24) [165]
> Ega23 © (16.06.08 12:17) [158]
>
> > Я второй раз вас спрашиваю где нарушение ООП Object Pascal?
>
>
>
> Класс "Пассажирский самолёт ТУ-154М" не должен ничего знать
> о пассажирском самолёте ТУ-154М с бортовым номером 34567
> и базирующимся в Благовещенске.
А как тебе тогда такая постановка вопроса?
Это президенский борт и все самолеты должны передавать данные о своем положении ему?
← →
Anatoly Podgoretsky © (2008-06-16 12:26) [166]> isasa (16.06.2008 12:15:36) [156]
Правильно, что бы конкретно говорить необходимо обладать всем кодом программы или объемливающей ее частью, которая одназначно гарантирует, что это весь текст, которые относится к данному предмету с именем Form1 и иметь техническое задание, иначе тоже без толку.
Это очень похоже на загадку ловушку, но программист не должен быть тупоумным, увидел знакомые буквы и решил, что решил задачу, он обязан видеть все варианты, а их уже много предложили.
Иначе и получаем программы, где мол ошибки в данном месте быть не может и проверять не надо.
Неужели не видел подобных утверждений, в том числе и от некоторых участников данной ветки.
Это ограниченность.
← →
b z (2008-06-16 12:27) [167]Почему-же автор ошибки молчит ... :(
← →
oxffff © (2008-06-16 12:29) [168]
> isasa © (16.06.08 12:15) [156]
> Этот код компилируется и ошибки в нем нет.
Согласен.
← →
Ega23 © (2008-06-16 12:30) [169]
> Это президенский борт и все самолеты должны передавать данные
> о своем положении ему?
А вот тогда вводится класс "Реестр всех самолётов". Куда каждый самолёт передаёт свои данные. И к которому экземпляр класса "Президентский самолёт" имеет доступ (кстати, и он сам туда же свои данные передаёт).
Т.е. имеет место кривая архитектура классов, только и всего. Нерабочей ошибкой это назвать нельзя. Но и правильным решением - тоже. Как некая "быстрая заплатка" - да, потянет. Но по своему опыту могу сказать, что нет ничего более постоянного, чем временные заплатки в программе.
← →
isasa © (2008-06-16 12:31) [170]Anatoly Podgoretsky © (16.06.08 12:26) [166]
> isasa (16.06.2008 12:15:36) [156]
Правильно, что бы конкретно говорить необходимо обладать всем кодом программы или объемливающей ее частью,
Это намек на? ...
type
TFormBuffer: class
public
Caption: ShortString;
.....
end;
var
Form1:TFormBuffer;
....
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Caption := "Где здесь ошибка?" ;
end;
← →
clickmaker © (2008-06-16 12:38) [171]> Класс "Пассажирский самолёт ТУ-154М" не должен ничего знать
> о пассажирском самолёте ТУ-154М с бортовым номером 34567
← →
Игорь Шевченко © (2008-06-16 12:39) [172]Розыч был дважды наивен :)
← →
isasa © (2008-06-16 12:41) [173]Ega23 © (16.06.08 12:30) [169]
А вот тогда вводится класс "Реестр всех самолётов". Куда каждый самолёт передаёт свои данные. И к которому экземпляр класса "Президентский самолёт" имеет доступ (кстати, и он сам туда же свои данные передаёт).
Т.е. имеет место кривая архитектура классов, только и всего. Нерабочей ошибкой это назвать нельзя. Но и правильным решением - тоже. Как некая "быстрая заплатка" - да, потянет. Но по своему опыту могу сказать, что нет ничего более постоянного, чем временные заплатки в программе.
Тоже не кошерно. Тут удобнее делать интерфейс...
Короче
"Не стреляйте в программиста, он играет, как умеет"
Результат, наше все...
← →
oxffff © (2008-06-16 12:42) [174]
> Ega23 © (16.06.08 12:30) [169]
>
> > Это президенский борт и все самолеты должны передавать
> данные
> > о своем положении ему?
>
>
> А вот тогда вводится класс "Реестр всех самолётов". Куда
> каждый самолёт передаёт свои данные. И к которому экземпляр
> класса "Президентский самолёт" имеет доступ (кстати, и
> он сам туда же свои данные передаёт).
Во первых жду ответа на указание правила ООП которое нарушено.
Во вторых я могу показать в предложенном тобой решение
есть несколько недостатков.
Вынесение посредника для одного потребителя информации неэфективно.
Тобой предложен механизм опроса, а не мгновенного уведомеления.
Для этого придется городить callback метод. И т.д и т.п.
Но главное ты не можешь создать один мощный сокрытый экземпляр.
← →
isasa © (2008-06-16 12:43) [175]Игорь Шевченко © (16.06.08 12:39) [172]
Розыч был дважды наивен :)
Да ну ее нафиг, ту работу. :)
← →
Ega23 © (2008-06-16 12:57) [176]
> Во первых жду ответа на указание правила ООП которое нарушено.
> Класс "Пассажирский самолёт ТУ-154М" не должен ничего знать
> о пассажирском самолёте ТУ-154М с бортовым номером 34567
← →
Пробегал2.... (2008-06-16 13:14) [177]Плохиш © (16.06.08 11:29) [124]
Вы можете маразмом страдать сколько угодно.
я тоже так считаю. Полностью понимая в чем дело, все равно разводить понты и упираться рогом - это говорит уже минимум о характере. Ну не возьмут на работу из-за характера (как с таким человеком потом работать в комманде), а не из-за отсутствия знаний. Будет гордый ходить и говорить, что все работодатели - лохи. Непризнанный гений, ага. Такие у нас каждые вторые ;)
← →
Anatoly Podgoretsky © (2008-06-16 13:22) [178]> isasa (16.06.2008 12:23:44) [164]
> А что такое Form1 в данном случае?
Имя модуля, а Caption имя переменной.
← →
Anatoly Podgoretsky © (2008-06-16 13:25) [179]> isasa (16.06.2008 12:31:50) [170]
Может и так, а может
unit Form1
var
Caption: string;
← →
clickmaker © (2008-06-16 13:27) [180]> unit Form1
>
> var
> Caption: string;
теоретически возможно, но практически представить трудно
← →
isasa © (2008-06-16 13:32) [181]Anatoly Podgoretsky © (16.06.08 13:25) [179]
Может и так, а может
Тогда правильный ответ на вопрос "Где здесь ошибка?"
Не объявленная переменная Form1, что и скажет каомпилятор.
Остальное все претензии тестера ...
Вопрос абсолютно не двусмысленный и, в случае тестов о приеме на работу в выдвижением претензий, я бы развернулся и ушел.
Это неадекватность рабочей среды у работодателя.
Непогрешимость авторитета?
← →
Anatoly Podgoretsky © (2008-06-16 13:50) [182]> clickmaker (16.06.2008 13:27:00) [180]
Ты явно имеешь ограниченое представление о гибкости "ума" некоторых начинающих и не только.
← →
Ega23 © (2008-06-16 13:51) [183]
> Ты явно имеешь ограниченое представление о гибкости "ума"
> некоторых начинающих и не только.
Класс. Запишу в цЫтатник.
← →
Virgo_Style © (2008-06-16 13:52) [184]imho.
Уровень ответа должен быть адекватен уровню вопроса.
Школьные задачи о наклонной плоскости можно решать с учетом высоты над уровнем моря и сопротивления воздуха.
Можно вспомнить, что Земля не имеет форму шара и не вращается вокруг Солнца.
Можно придумать сотню нестандартных способов измерения высоты башни с помощью барометра.
Вопрос в уместности этого в каждом конкретном случае.
← →
Ega23 © (2008-06-16 13:54) [185]
> Можно придумать сотню нестандартных способов измерения высоты
> башни с помощью барометра.
Сотню сложно.
← →
VirEx © (2008-06-16 14:05) [186]
> [118] Игорь Шевченко © (16.06.08 11:11)
> Точка зрения компилятор и точка зрения работодателя - это
> две разные точки зрения.
>
> Например, если соискатель принесет такой код, верный с точки
> зрения компилятора:
получится, у работодателя будет установлен DelforExp и он приучит кадра нажимать ^D соответствующим пунктом в договоре
← →
isasa © (2008-06-16 14:11) [187]Все. Последняя реплика и пошел пить пиво...
Вот интересно. В среде код, скорее всего будет построен так
...
interface
...
var
Form1: TForm1;
implementation
....
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Caption := "Где здесь ошибка?" ;
end;
Пре изменении имени Form1 на скажем Oops1 и рефакторинге, будет изменение Oops1.Caption?
Или данный код не относится к программированию на Delphi?
← →
Anatoly Podgoretsky © (2008-06-16 14:11) [188]> isasa (16.06.2008 13:32:01) [181]
И правильно сделал бы, поскольку потом обязательно возникнут проблемы.
← →
Anatoly Podgoretsky © (2008-06-16 14:15) [189]> isasa (16.06.2008 14:11:07) [187]
Вероятность свыше 100%
← →
clickmaker © (2008-06-16 14:45) [190]> [187] isasa © (16.06.08 14:11)
> Все. Последняя реплика и пошел пить пиво...
везет людям. В 2 часа уже можно пиво пить )
← →
isasa © (2008-06-16 14:50) [191]clickmaker © (16.06.08 14:45) [190]
везет людям. В 2 часа уже можно пиво пить )
У нас сегодня выходной. Троица вчера была. Так что в 2 часа - это уже, скорее всего, поздно ...
← →
isasa © (2008-06-16 14:53) [192]Anatoly Podgoretsky © (16.06.08 14:15) [189]
Вероятность свыше 100%
Тогда...
Если данная схема использования имен предусмотрена разработчиком среды, то о чем мы говорим. О какой "ошибке".
← →
oxffff © (2008-06-16 14:53) [193]
> isasa © (16.06.08 14:11) [187]
> Все. Последняя реплика и пошел пить пиво...
> Вот интересно. В среде код, скорее всего будет построен
> так
>
> ...
> interface
> ...
> var
> Form1: TForm1;
>
> implementation
>
> ....
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> Form1.Caption := "Где здесь ошибка?" ;
> end;
>
>
> Пре изменении имени Form1 на скажем Oops1 и рефакторинге,
> будет изменение Oops1.Caption?
> Или данный код не относится к программированию на Delphi?
>
В этом коде нет ошибок. Все согласны?
← →
Ega23 © (2008-06-16 14:57) [194]
> В этом коде нет ошибок. Все согласны?
Ошибок - нет. Кривизна - есть.
← →
clickmaker © (2008-06-16 14:58) [195]> В этом коде нет ошибок. Все согласны?
это бессмысленный код. К тому же непонятный. Зачем? чего хотели добиться?
единственный вариант - установка заголовка одной формы из нескольких модулей (судя по тому, что переменная в interface) - и тот кривой. Нет проверки хотя бы на nil.
← →
oxffff © (2008-06-16 15:07) [196]clickmaker © (16.06.08 14:58) [195]
> Нет проверки хотя бы на nil.
Ну мы этот вариант разобрали в oxffff © (16.06.08 11:16) [120].
А окромя этого.
Тут бывалые зыбры говорят о каких нарушения ООП.
Есть такое?
← →
Плохиш © (2008-06-16 15:07) [197]Чуть, чуть протухшая осетрина...
← →
oxffff © (2008-06-16 15:08) [198]
> Ega23 © (16.06.08 14:57) [194]
>
> > В этом коде нет ошибок. Все согласны?
>
>
> Ошибок - нет. Кривизна - есть.
В студию. Кратко.
← →
oxffff © (2008-06-16 15:09) [199]
> Плохиш © (16.06.08 15:07) [197]
> Чуть, чуть протухшая осетрина...
Я жду от вас ответа на нарушении ООП. В противном случае воспринимаем ваши реплики как пустой треп.
← →
isasa © (2008-06-16 15:15) [200]Ega23 © (16.06.08 14:57) [194]
Ошибок - нет. Кривизна - есть.
Ну а куда ты поместишь инициализацию экземпляра формы, чтобы он был при Создать форму.
Ну Борланд придумал так, плюс еще..
Application.CreateForm(TForm1, Form1);
Компилируй и юзай. Что неправильно. Да "пложой стиль", не по правилам(сейчас oxffff © меня сожрет). Не нравится исправляй.
Ответ в том, исправит ли рефакторинг(или предложаит исправить Form1 на Self) ? :)
← →
Ega23 © (2008-06-16 15:15) [201]
> В студию. Кратко.
Сергей, ну сколько можно уже, а? Ну не должен какой-то класс знать что-то о каком-то конкретном экземпляре этого же класса.
← →
Плохиш © (2008-06-16 15:16) [202]
> oxffff © (16.06.08 15:09) [199]
У это вам неинтересно
>>isasa © (16.06.08 12:10) [147]
>>>oxffff © (16.06.08 12:06) [144]
>>>Это про какие такие вы принципы нарушения ООП говорите.
>>Пожелание о том, что код метода класса не должен ничего "знать" о >>конкретном экземпляре этого класса.
вы же хотите конкретную цитату из единственной книжки, которую вы якобы осилили. Как здесь говорят "детский сад в другом месте".
← →
oxffff © (2008-06-16 15:24) [203]
> Ega23 © (16.06.08 15:15) [201]
>
> > В студию. Кратко.
>
>
> Сергей, ну сколько можно уже, а? Ну не должен какой-то класс
> знать что-то о каком-то конкретном экземпляре этого же класса.
>
Ребята я на полном серьезе повторяю.
Что ваши слова должны быть потверждены.
Если вы утверждаете о каком то нарушении ООП, а частности реализации ООП Delphi. Тогда сформулируйте правило, которое нарушено.
Покажите где нарушена инкапсуляция.
Если я использую тип в модуле где он объявлен, то нарушения нет.
Все в рамках правил Delphi.
Поэтому нарушение сокрытия здесь нет.
Поэтому твоя формулировка
>Ну не должен какой-то класс знать что-то о каком-то конкретном >экземпляре этого же класса.
более чем странная.
Класс не знает, а использует экземпляр класса(в данном случае экземпляр себя).
← →
isasa © (2008-06-16 15:25) [204]Плохиш © (16.06.08 15:16) [202]
вы же хотите конкретную цитату из единственной книжки, которую вы якобы осилили. Как здесь говорят "детский сад в другом месте".
Ну это лучше, чем с загадочным видом нести ахинею, или глупости.
← →
oxffff © (2008-06-16 15:26) [205]
> Компилируй и юзай. Что неправильно. Да "пложой стиль", не
> по правилам(сейчас oxffff © меня сожрет). Не нравится исправляй.
>
Да ну что вы. Я довольно Friendly человек.
← →
DVM © (2008-06-16 15:30) [206]
> Плохиш © (16.06.08 15:16) [202]
>
>
> вы же хотите конкретную цитату из единственной книжки, которую
> вы якобы осилили. Как здесь говорят "детский сад в другом
> месте".
А вам не кажется, что кроме оскорблений в адрес собеседников Вы ничего путного до сих пор так не сказали? Перечитайте все свои посты.
← →
clickmaker © (2008-06-16 15:31) [207]> Класс не знает, а использует экземпляр класса(в данном случае
> экземпляр себя).
если себя, то почему не Self?
Если "типа универсальность", то почему не GetFormToSetCaption().Caption := ... ?
← →
isasa © (2008-06-16 15:31) [208]oxffff © (16.06.08 15:26) [205]
Да ну что вы. Я довольно Friendly человек.
В этом вопросе я целиком на вашей стороне. Только я использую оговорку, Дельфи не "польностью" следует "хорошему тону" ООП.
← →
oxffff © (2008-06-16 15:38) [209]
> Плохиш © (16.06.08 15:16) [202]
>
> > oxffff © (16.06.08 15:09) [199]
>
> У это вам неинтересно
>
> >>isasa © (16.06.08 12:10) [147]
> >>>oxffff © (16.06.08 12:06) [144]
>
> >>>Это про какие такие вы принципы нарушения ООП говорите.
>
>
> >>Пожелание о том, что код метода класса не должен ничего
> "знать" о >>конкретном экземпляре этого класса.
>
> вы же хотите конкретную цитату из единственной книжки, которую
> вы якобы осилили. Как здесь говорят "детский сад в другом
> месте".
Ну и долго вы будете отвечать на вопрос "сам дурак"?
Использование в реализации ссылки на экзепляр самого себя не противоречит ООП и бывает очень востребовано.
Например У вас Есть абстрактный класс
type
TAbstractStreamObject=class
public
function Read(...):integer;virtual;
function write(...):integer;virtual;
end;
function InitializeGlobalStream(obj:TAbstractStreamObject):integer;
implementation
var GlobalIntercept:TAbstractStreamObject;
function TAbstractStreamObject.Read(..)....
begin
if assigned(GlobalIntercept) then result:=GlobalIntercept.read(...)
else...
end;
function TAbstractStreamObject.Write(..)....
begin
if assigned(GlobalIntercept) then result:=GlobalIntercept.Write(...)
else...
end;
Таким образом вы можете установить\менять перехватчик runtime.
Причем передавать в конструктор его не нужно (экономим передачу и место в памяти). Он разделяется всеми экземплярами.
← →
oxffff © (2008-06-16 15:39) [210]
> clickmaker © (16.06.08 15:31) [207]
> > Класс не знает, а использует экземпляр класса(в данном
> случае
> > экземпляр себя).
>
> если себя, то почему не Self?
> Если "типа универсальность", то почему не GetFormToSetCaption().
> Caption := ... ?
В данном случае экземпляр себя как типа, либо производного.
см. пример [209].
← →
Ega23 © (2008-06-16 15:41) [211]
> Класс не знает, а использует экземпляр класса(в данном случае
> экземпляр себя).
Блин, ну есть же Self для этого!!!
чем плох такой код:if CheckBox1.Checked=True then
begin
CheckBox1.Checked := False;
end
else
begin
if CheckBox1.Checke=False then
begin
CheckBox1.Checked := True;
end
else
raise Exception.Create("Unknown boolean value!");
end;
← →
b z (2008-06-16 15:42) [212]
> Unknown boolean valueЗамечено, что программисты зачастую пишут функции, которые возвращают ложь (return false по-басурмански). Негоже это. Коли приметишь, такое непотребство, немедленно учини разбирательство и потребуй, чтобы такого боле не повторялось. А коли программисты начнут нести околесицу про булевы функции и необходимость возвращения двух значений, осади их и скажи, что для двух значений ложь не нужна. Можно же взять правду и горькую правду. Пущай везде в своем коде заменят ложь на горькую правду. Только так можно получить по настоящему благодатный код.
← →
oxffff © (2008-06-16 15:42) [213]
> isasa © (16.06.08 15:31) [208]
> oxffff © (16.06.08 15:26) [205]
>
> Да ну что вы. Я довольно Friendly человек.
>
> В этом вопросе я целиком на вашей стороне. Только я использую
> оговорку, Дельфи не "польностью" следует "хорошему тону"
> ООП.
На сколько я понял вы хотели сказать наверно не ООП,
а возможное нарушение типа за счет Untyped var.
procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference);
← →
oxffff © (2008-06-16 15:47) [214]
> Ega23 © (16.06.08 15:41) [211]
>
> > Класс не знает, а использует экземпляр класса(в данном
> случае
> > экземпляр себя).
Что с примером?
Повторю еще раз.
Я имел ввиду использование экземпляра себя как типа (т.е. экземпляра этого типа, так и производного типа)
см. [209]
← →
clickmaker © (2008-06-16 15:49) [215]> function TAbstractStreamObject.Read(..)....
> begin
> if assigned(GlobalIntercept) then result:=GlobalIntercept.read(...)
эээ... не понял без стакана.
Рекурсия же получается? Или 2 разных объекта: тот, откуда вызывается GlobalIntercept.read и собственно сам GlobalIntercept?
← →
oxffff © (2008-06-16 15:54) [216]
> clickmaker © (16.06.08 15:49) [215]
type
TAbstractStreamObject=class
public
function Read(...):integer;virtual;
function write(...):integer;virtual;
end;
TSomeClientStreamObject=class(TAbstractStreamObject)
function Read(...):integer;override;
begin
.........
inherited;
end;
function write(...):integer;virtual;
begin
.........
inherited;
end;
end;
function InitializeGlobalStream(obj:TAbstractStreamObject):integer;
implementation
var GlobalIntercept:TAbstractStreamObject;
function TAbstractStreamObject.Read(..)....
begin
if assigned(GlobalIntercept) then result:=GlobalIntercept.read(...)
else...
end;
function TAbstractStreamObject.Write(..)....
begin
if assigned(GlobalIntercept) then result:=GlobalIntercept.Write(...)
else...
end;
Другой модуль.
TIntercepttreamObjectA=class(TAbstractStreamObject)
function Read(...):integer;override;
begin
.........
// inherited;
end;
function write(...):integer;virtual;
begin
.........
// inherited;
end;
initialization
InitializeGlobalStream(TIntercepttreamObjectA.create(..));
← →
Ega23 © (2008-06-16 15:54) [217]
> Что с примером?
>
> Повторю еще раз.
> Я имел ввиду использование экземпляра себя как типа (т.е.
> экземпляра этого типа, так и производного типа)
> см. [209]
Честно говоря, я не понял примера. Покажи код InitializeGlobalStream, может понятней станет.
← →
clickmaker © (2008-06-16 15:57) [218]> код InitializeGlobalStream
procedure InitializeGlobalStream(AStream: TAbstractStreamObject)
begin
GlobalIntercept := AStream;
end;
:)
← →
oxffff © (2008-06-16 15:57) [219]function InitializeGlobalStream(obj:TAbstractStreamObject):integer;
begin
GlobalIntercept:=obj;
end;
← →
oxffff © (2008-06-16 15:58) [220]
> clickmaker © (16.06.08 15:57) [218]
> > код InitializeGlobalStream
>
> procedure InitializeGlobalStream(AStream: TAbstractStreamObject)
> begin
> GlobalIntercept := AStream;
> end;
>
> :)
Теперь вы согласны, что выгода есть?
← →
clickmaker © (2008-06-16 16:03) [221]цепочка вызовов
GlobalIntercept <- объект типа TIntercepttreamObjectA
GlobalIntercept.read()
TAbstractStreamObject.read()
GlobalIntercept <> nil ? yes!
GlobalIntercept.read()
и т.д.
или мне срочно надо похмеляццо, или тут рекурсия. Это вообще рабочий код?
← →
oxffff © (2008-06-16 16:06) [222]
> clickmaker © (16.06.08 16:03) [221]
> цепочка вызовов
> GlobalIntercept <- объект типа TIntercepttreamObjectA
> GlobalIntercept.read()
> TAbstractStreamObject.read()
> GlobalIntercept <> nil ? yes!
> GlobalIntercept.read()
> и т.д.
>
> или мне срочно надо похмеляццо, или тут рекурсия. Это вообще
> рабочий код?
Вызов не перехватчиков приведет к вызову перехватчика.
А у перехватчика нет вызова самого себя поскольку inherited закомментирован.
Я же пометил жирным inherited в одном случае и закоменченный inherited в другом.
← →
Ega23 © (2008-06-16 16:07) [223]Какой-то "недо-singleton" получился...
Ну да ладно. В данном конкретном примере - предположим что именно такой функционал нужен. Решение как решение.
Но есть одно "но": объявление переменной выполнено в секции implementation, а не interface.
← →
oxffff © (2008-06-16 16:10) [224]>"недо-singleton"
Это не синглетон. У синглетона другая задача.
> Но есть одно "но": объявление переменной выполнено в секции
> implementation, а не interface.
Объяви в interface. Нет проблем.
← →
Ega23 © (2008-06-16 16:19) [225]
> Объяви в interface. Нет проблем.
Проблем есть. Т.к. рано или поздно это дело будет использовано кем-то другим.
Если так подходить, то ни private ни protected нафиг не нужны - пиши всё в public и нет проблем. :)
← →
Ega23 © (2008-06-16 16:20) [226]
> Это не синглетон. У синглетона другая задача.
Да я вижу. Нечто похожее, но не оно - у тебя в рантайм менять можно.
← →
oxffff © (2008-06-16 16:24) [227]
> Ega23 © (16.06.08 16:19) [225]
>
> > Объяви в interface. Нет проблем.
>
>
> Проблем есть. Т.к. рано или поздно это дело будет использовано
> кем-то другим.
> Если так подходить, то ни private ни protected нафиг не
> нужны - пиши всё в public и нет проблем. :)
Проблема выбора interface или implementation отношения к ООП не имеет. Это выбор разработчика предоставить доступ или вообще полностью скрыть.
← →
oxffff © (2008-06-16 16:26) [228]
> Ega23 © (16.06.08 16:20) [226]
>
> > Это не синглетон. У синглетона другая задача.
>
>
> Да я вижу. Нечто похожее, но не оно - у тебя в рантайм менять
> можно.
У синглетона назначение гарантировать существование не более одного экземпляра. А здесь просто использование shared объекта.
← →
Ega23 © (2008-06-16 16:28) [229]
> У синглетона назначение гарантировать существование не более
> одного экземпляра. А здесь просто использование shared объекта.
Да вижу я, не надо объяснять. Я просто в [223] смайлик забыл поставить.. :)
← →
isasa © (2008-06-16 16:30) [230]oxffff © (16.06.08 16:10) [224]
:)
Я бы все таки не смешивал идеал и способы его конкретной реализации.
Есть краски, а есть картины.
Идеал, он в общем то, недостижим..
← →
oxffff © (2008-06-16 16:35) [231]
> isasa © (16.06.08 16:30) [230]
Однако я так и не услышал нарушение принципов ООП от других участников в примере который мы(все) уже раздули до мамонта.
← →
Игорь Шевченко © (2008-06-16 18:16) [232]Дабы флейм не стихал:
Где в этом коде ошибка?
procedure TForm1.ButtonClick (Sender: TObject);
begin
Form1.Caption := "Blah";
Form2.Caption := "Foo";
end;
← →
Kostafey © (2008-06-16 18:24) [233]Ну коли
> Дабы флейм не стихал:
Повторюсь, что код не компилируется :)
procedure TFоrm1.ButtоnCliсk (Sеnder: TОbject);
begin
Fоrm1.Caption := "Blah";
Fоrm2.Caption := "Foo";
end;
← →
McSimm © (2008-06-16 18:26) [234]
> Игорь Шевченко © (16.06.08 18:16) [232]
>
> Дабы флейм не стихал:
>
> Где в этом коде ошибка?
Должно быть TForm1.Button1Click
:)
← →
Virgo_Style © (2008-06-16 18:28) [235]
procedure TFоrm1.ButtоnCliсk (Sеnder: TОbject);
Form1.Caption := "Alpha";
Self.Caption = "Bravo";
Caption = "Charlie";
end;
← →
Virgo_Style © (2008-06-16 18:29) [236]Virgo_Style © (16.06.08 18:28) [235]
Ну вот, двоеточия потерял. Так лучше:procedure TFоrm1.ButtоnCliсk (Sеnder: TОbject);
Form1.Caption := "Alpha";
Self.Caption := "Bravo";
Caption := "Charlie";
end;
← →
Ega23 © (2008-06-16 18:39) [237]
> Virgo_Style © (16.06.08 18:28) [235]begin
отсутствует.
А кому будешь Delta, Easy, Foxtrot и Golf раздавать?
← →
Anatoly Podgoretsky © (2008-06-16 19:30) [238]> Ega23 (16.06.2008 18:39:57) [237]
Из этих четырех ников вроде только один правильный.
← →
Virgo_Style © (2008-06-16 20:38) [239]Ega23 © (16.06.08 18:39) [237]
begin отсутствует.
Торможу. Все-таки возможность редактирования сообщений была бы иногда очень кстати...
> А кому будешь Delta, Easy, Foxtrot и Golf раздавать?
Землю крестьянам, власть рабочим, Фокстрот танцорам, Гольф игрокам (или автомобилистам?)... А вот с первыми двумя надо думать.
← →
DVM © (2008-06-16 22:05) [240]
procedure TForm1.Button1Click(Sender: TObject);
begin
Captiоn := "Где тут ошибка"?
end;
А вот этот код не компилится, так как тут ошибка. Где она?
← →
isasa © (2008-06-16 22:10) [241]Господи!
Еще не все?
DVM © (16.06.08 22:05) [240]
А вот этот код не компилится, так как тут ошибка. Где она?
:)
Вопросительный знак вывалился из кавычек ...
← →
DVM © (2008-06-16 22:12) [242]
> isasa © (16.06.08 22:10) [241]
> Вопросительный знак вывалился из кавычек ...
а вот и не только :) копипастим - проверяем :)
← →
isasa © (2008-06-16 22:35) [243]DVM © (16.06.08 22:12) [242]
а вот и не только :) копипастим - проверяем :)
Не могу, у меня Дельфи уже год как не стоит на машине. :)
← →
Virgo_Style © (2008-06-16 23:49) [244]DVM © (16.06.08 22:12) [242]
копипастим - проверяем :)
Неанглийские буковки?
← →
DVM © (2008-06-16 23:55) [245]
> Неанглийские буковки?
Ага. Чем не тестовое задание на собеседовании? ;)
← →
Anatoly Podgoretsky © (2008-06-17 00:19) [246]> DVM (16.06.2008 22:12:02) [242]
Да какой же дурак копипастит из Инета?
← →
Anatoly Podgoretsky © (2008-06-17 00:22) [247]> Virgo_Style (16.06.2008 23:49:04) [244]
Легко хочешь отделаться, а nbsp не желаешь попробовать или другие невидимые символы?
Одна из подколок копипастеров - это сменить регистр букв, вставить непечатные символы, не пробел и таб
Если регистр букв будет быстро обнаружен и автор будет обозван, то во втором случае не сразу дойдет и автор будет уже не обозван, а проклят.
← →
VirEx © (2008-06-17 10:57) [248]
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> Form1.Caption := "Где здесь ошибка?" ;
> end;
object Form1: TForm1
...
Caption = "tikkurilla"
...
end
Страницы: 1 2 3 4 5 6 7 вся ветка
Форум: "Прочее";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];
Память: 1.17 MB
Время: 0.045 c