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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.037 c
1-1097169006
F1
2004-10-07 21:10
2004.10.24
Как узнать нажата ли только что созданая кнопка?


3-1096355590
iat
2004-09-28 11:13
2004.10.24
Как можно узнать имена таблиц в БД (InterBase)


1-1097213373
Fynjy1984
2004-10-08 09:29
2004.10.24
Dll


14-1096550487
Григорьев Антон
2004-09-30 17:21
2004.10.24
Какого только бреда не найдёшь в сети!


3-1096381121
AlexXn
2004-09-28 18:18
2004.10.24
Оракл тупит





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