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

Вниз

Кто-нибудь сможет сходу определить причину ошибки? :)   Найти похожие ветки 

 
Anatoly Podgoretsky ©   (2004-10-05 16:49) [80]

Sandman25 ©   (05.10.04 16:38) [79]
Если с тобой согласиться, то придется делать двойной комплект методов, с параметром и без. Вот тут тебе прогнозирую резкое замедление производительности, на время написания, на время тестирования и навремя поиска потом ошибок в программе.
Механизм с одним методом гарантирует как единообразие, так и отсутствие возможных ошибок, где передали, где нет, а использовать пытались.
Перенос анализа на НИЛ из метода добавления в другие методы, к тому же вызовет заметное замедление работы других частей иерархии.


 
Игорь Шевченко ©   (2004-10-05 16:49) [81]

Sandman25 ©   (05.10.04 16:23) [75]


> Я понимаю, что в данном случае следует указывать конкретный
> параметр


И это утверждение неверно :)


> Меня удивляет Ваше нежелание признать, что очень часто лучше
> указывать именно nil.


Зачем ? В своем посте [59] я сказал уже, что все зависит от задачи.


 
Sandman25 ©   (2004-10-05 16:54) [82]

[80] Anatoly Podgoretsky ©   (05.10.04 16:49)

Мне кажется, что Вы меня не поняли. Я не призываю к overload, я призываю использовать nil в качестве параметра, если параметр не используется.
К тому же, это отлично сочетается с синтаксисом параметров по умолчанию, где для объектов может быть только nil.

[81] Игорь Шевченко ©   (05.10.04 16:49)

И это утверждение неверно :)

Вы сообщили, что в данном случае у Вас используется параметр, и у меня нет оснований Вам не верить, уж извините :)

Зачем ? В своем посте [59] я сказал уже, что все зависит от задачи.

Правильно. Но по умолчанию следует передавать nil (если все равно, что передавать). Это логично, быстро и понятно другим программистам :)


 
Anatoly Podgoretsky ©   (2004-10-05 16:57) [83]

В таком случае никакого повышения не наблюдается, без разницы кто передаст параметр, программист или компилятор, параметр все равно передается.


 
Sandman25 ©   (2004-10-05 17:03) [84]

[83] Anatoly Podgoretsky ©   (05.10.04 16:57)

Тут уже проскакивал код из Create c проверкой на nil и вызовом InsertComponent.
В случае передачи nil InsertComponent не вызовется. Аналогично при удалении.


 
Игорь Шевченко ©   (2004-10-05 17:08) [85]


> Правильно. Но по умолчанию следует передавать nil (если
> все равно, что передавать). Это логично, быстро и понятно
> другим программистам :)


Насчет логичности и понятности другим программистам лично я сильно сомневаюсь. Быстрота в данном случае не играет мало-мальски значимой роли.


 
Sandman25 ©   (2004-10-05 17:11) [86]

[85] Игорь Шевченко ©   (05.10.04 17:08)

Насчет логичности и понятности другим программистам лично я сильно сомневаюсь

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


 
Piter ©   (2004-10-05 23:16) [87]

сразу хочу извиниться, что врываюсь тут к вам с оффтопом..

_silver ©   (05.10.04 1:17) [25]
with ArrayParent[0] - ожидается использование объекта типа TEdit, но ещё не создан.
Поэтому в блоке begin .. end свойство Parent(класса TEdit) неизвестно


НУ БЛИН!
А в with Edit разве не ожидается использование объекта TEdit??? Но ведь он то еще не создан и Parent Тоже неизвестно!!!!!!!
А пример то работает.


 
GuAV ©   (2004-10-06 01:13) [88]

О быстродействии говорить не следует.
см  [51]. Эквивалентный код с with и без.
Когда речь идет о with речь идёт об удобстве/неудобстве или о понятности/непонятности кода.


 
Ihor Osov'yak ©   (2004-10-06 01:41) [89]

2 [43] Piter(Ne doma)   (05.10.04 12:13)

> никаких предупреждение компилятор НЕ ПИШЕТ

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

2 [44] GuAV ©   (05.10.04 12:30)

>> Зы. странно, что борланды вообще такую конструкцию считают
>> синтастически допустимой...

>О чём это Вы ?

изменение в теле with "подwith-нутой" переменной. Если чесно - я такого бы не написал даже при изрядной степени опьянения. Имхо, это (изменение в теле with "подwith-нутой" переменной) сродни попытки изменения переменой цыкла внутри цыкла.   Что из этого может получиться - см. выше.


 
GuAV ©   (2004-10-06 01:51) [90]

Ihor Osov"yak ©   (06.10.04 01:41) [89]
Подумал, и вынужден с Вами согласится.


 
Игорь Шевченко ©   (2004-10-06 11:26) [91]

GuAV ©   (06.10.04 01:13) [88]


> Когда речь идет о with речь идёт об удобстве/неудобстве
> или о понятности/непонятности кода.


View|Debug windows|CPU


 
Igorek ©   (2004-10-06 12:05) [92]

> Ihor Osov"yak ©   (06.10.04 01:41) [89]
> изменение в теле with "подwith-нутой" переменной. Если чесно
> - я такого бы не написал даже при изрядной степени опьянения.
> Имхо, это (изменение в теле with "подwith-нутой" переменной)
> сродни попытки изменения переменой цыкла внутри цыкла.

Точно!


 
Anatoly Podgoretsky ©   (2004-10-06 12:16) [93]

Piter ©   (05.10.04 23:16) [87]
У тебя все работает, только изменяется содержимое регистра или временной переменой :-)


 
GuAV ©   (2004-10-06 13:00) [94]

Игорь Шевченко ©   (06.10.04 11:26) [91]

procedure With1; // breakpoint here
begin
 with Form1.Memo1.Lines do
 begin
   Add("zzzzzzz");
   Add("xxxxxxx");
 end;
end;

procedure WithOut1;
var L: TStrings;
begin
 L:=Form1.Memo1.Lines; // breakpoint here
 L.Add("zzzzzzz");
 L.Add("xxxxxxx");
end;

procedure With2;
begin
 with TForm.Create(nil) do // breakpoint here
 try
   color:=clred;
 finally
   free;
 end;
end;

procedure WithOut2;
var F: TForm;
begin
 F:=TForm.Create(nil); // breakpoint here
 try
   F.color:=clred;
 finally
   F.free;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 With1;
 WithOut1;
 With2;
 WithOut2;
end;


В CPU я вижу только отличия которые связаны с тем что процедуры находится по разному смещению, инструкции абсолютно те же.



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

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

Наверх




Память: 0.64 MB
Время: 0.053 c
14-1096614521
Жук
2004-10-01 11:08
2004.10.24
А.Н.Толстой "Пётр Первый"


4-1095785051
Inoplanetjanin
2004-09-21 20:44
2004.10.24
Перехват сообщения


14-1097135766
Mike Kouzmine
2004-10-07 11:56
2004.10.24
Скончался Морис Уилкинс


14-1096919355
Gero
2004-10-04 23:49
2004.10.24
Программа для локалки


3-1096319312
Lamer8
2004-09-28 01:08
2004.10.24
Как получить новое значение счётчика