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

Вниз

и чего дельфи хоронят?..   Найти похожие ветки 

 
euru ©   (2011-12-22 15:00) [120]


> Андреевич   (22.12.11 14:30) [112]
> она лучше пока не нужен i в теле цикла

> Компромисс ©   (22.12.11 14:32) [113]
> Если важно знать номер итерации, то do n time не подходит, конечно.

Номер итерации хранится в системной переменной, значение которой доступно внутри цикла и содержит номер текущей итерации (см. [118]).


 
OW ©   (2011-12-22 15:05) [121]


> euru ©   (22.12.11 14:42)

это я понимаю, там через ECX loop идет скорее всего, иное трудно представить, если только искусственно что-то сделать.

А такой язык, что бы было можно
   push 50;
>  ZdelayTakChtobyAvtoShemaRabotalaHoroshoIBezGlukov;
   mov EAX, 35
>  ZdelayTakChtobyAvtoShemaRabotalaHoroshoIBezGlukov;
и результаты разные :)

>> насчет середины
неплохо, конечно.
Хочешь так, хочешь этак.
с другой стороны - много команд, дублирующих друг друга, позволит писать смешано и будет труба полная :)

По коду выше, под номером 4, где сплошь [] [] и индексы, индексы - вот это в глаза бросается, конечно. Как -то описательно если можно было бы изначально делать - может бы было привычно.
т.е.
Мне паскаль нравится. Если его расширяют новыми версиями - хорошо.
Пусть кто-то пишет как позволяют новые правила/синтаксис.
Сам пока подожду :)


 
Kerk ©   (2011-12-22 15:05) [122]


> euru ©   (22.12.11 15:00) [120]

Так чем вариант из [108] хуже этого извращения с системными переменными? :)


 
Компромисс ©   (2011-12-22 15:10) [123]


> Это уже шаг в сторону перла :)


Это не перл, но мне очень нравится :) Особенно если вот так:

var obj:Object = new Object();
obj.firstName = "Vasya";
obj.lastName = "Pupkin";
for (var propertyName:String in obj){
 trace(property + "=" + obj[propertyName]);
}


Такие шикарные Class Factory писать можно... Они, кстати, даже есть в стандарте.
Типа
var classFactory:IFactory = new ClassFactory(Label);
classFactory.properties = {text:"Vasya Pupkin", height:190}


 
Компромисс ©   (2011-12-22 15:12) [124]


> Номер итерации хранится в системной переменной, значение
> которой доступно внутри цикла и содержит номер текущей итерации
> (см. [118]).


ИМХО, негоже использовать хакерские приемы. А ну как реализация изменится?


 
euru ©   (2011-12-22 15:21) [125]


> Romkin ©   (22.12.11 14:36) [115]

> как насчет такой середины?
Это смотреть в сторону C# с LINQ.


 
Anatoly Podgoretsky ©   (2011-12-22 15:24) [126]

> Ega23  (22.12.2011 13:28:47)  [107]

Данная клнструкция всего лишь вариация FOR, можно спокойно жить без нее и
жили


 
Kerk ©   (2011-12-22 15:24) [127]


> Компромисс ©   (22.12.11 15:10) [123]

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


 
euru ©   (2011-12-22 15:47) [128]


> Kerk ©   (22.12.11 15:05) [122]

> Так чем вариант из [108] хуже этого извращения с системными переменными? :)
Я не говорил, что этот вариант хуже. Просто такого варианта нет в паскале, код которого "очень похож на английский текст" [76],и "даже неподготовленный может догадаться что там происходит" [76]. А именно для этого языка я привёл примеры из другого языка.

А вообще, хотя всю сознательную жизнь программировал на паскале и Delphi, а последние 9 лет на АВАРе, си-подобный синтаксис мне кажется более удобным (если им, конечно, пользоваться с умом).


 
Компромисс ©   (2011-12-22 16:14) [129]


> Нет, я про то, что синтаксис двух вариантов цикла очень
> похожий. Такие моменты имеют тенденцию ускользать от внимания
> и вести к неприятным багам.  К тому же, человеку не знающему
> язык, вообще непонятно в чем разница между циклами, т.е.
>  до естественности тут далеко.


Да, согласен. Но не вводить же for index и for element...


 
Ega23 ©   (2011-12-22 16:15) [130]


> си-подобный синтаксис мне кажется более удобным

Вот уж что-что, а синтаксис сравнивать, ИМХО, последнее дело.
* и & или ^ и @ - дело сугубо привычки. Регистрозависимость... Ну я и так всегда код выдерживаю в ключе регистрозависимости.
++ vs dec - да тоже ерунда. Вот скобочки писать для функции без параметров как-то напрягает. Но не особо. В Delphi тоже пустые скобки допускаются, это просто нас развратил Code Insight.
Возможность ++i и i++ - лично я никогда особых преимуществ не видел, ИМХО, только запутывание. А должно быть всё "пусть безобразно, но единообразно" (с).


 
Ega23 ©   (2011-12-22 16:17) [131]

И всё это нытьё по-поводу синтаксиса исключительно для тех, кто одним из них толком никогда не пользовался. Когда приходилось и на Delphi и на JS одновременно писать, то уже где-то через неделю при переключении окошек редактора в башке щёлкал триггер переключения синтаксиса.


 
Компромисс ©   (2011-12-22 16:36) [132]


> Когда приходилось и на Delphi и на JS одновременно писать,
>  то уже где-то через неделю при переключении окошек редактора
> в башке щёлкал триггер переключения синтаксиса.


Немного не так. Надо работать не меньше недели на одном, а потом переключиться на неделю на другой. Причем, чтоб языки были во многом похожи.
Вот тогда я реально начинал на java писать private var obj: Object вместо private Object obj, а вместо public String toString(){...} писал  public function toString():String{...} :)


 
Inovet ©   (2011-12-22 17:19) [133]

> [130] Ega23 ©   (22.12.11 16:15)
> Возможность ++i и i++ - лично я никогда особых преимуществ
> не видел

Есть там нюансы - operator++() будет вызвана до или после, а в ней мало ли чего наворочено.


 
Ega23 ©   (2011-12-22 17:46) [134]


> Есть там нюансы


да я в курсе нюансов. Я про преимущества.


 
brother ©   (2011-12-22 20:14) [135]

> [38] Dennis I. Komarov ©   (21.12.11 23:15)

я думал это прикол...


 
jack128_   (2011-12-22 23:20) [136]


>  Но вот как-то не сложилось у меня дружба с foreach, не
> знаю почему.

Я могу объяснить, почему в дельфе у меня не сложилось с for in .
Допустим я редакторе напишу:
"for"
Мне тут же генерируется шаблон

for I := 0 to List.Count - 1 do  + объявление переменной I в секцию var. Мне только название коллекции вместо List нужно набрать.

Для for in мне нужно самому переменную объявлять, вспоминать, какой там конкретно тип в коллекции сидит, в общем  вагон проблем созданных из ничего.

Для сравнения - шарп + resharper
Я набираю
"foreach"
генерируется заглушка:
foreach(var [item] in [Items])
{
[]
}
// квадратными скобками показаны плейсхолдеры, по которым можно табом перемещаться.
сначала фокус стоит на Items, причем выпадает popup со списком колекций. Выбираю например Orders + жму Tab, перехожу на item , тут название переменной _автоматом_ меняется на основании имени коллекции (в данном случае "order"), жму еще раз Tab поподаю в тело цикла.

Вывод то прост: IDE (не язык, а именно IDE) определяет сознание в таких мелких улучшениях синтаксиса.
Вот если бы в delphi ide была такая же поддержка for in,  как VS для foreach, то я б только им и пользовался, ибо индекс нужен не часто. Но что имеем, то имеем.


 
DVM ©   (2011-12-22 23:39) [137]


> Rouse_ ©   (22.12.11 11:14) [89]
>
> С включенным флагом почти весь VCL не соберется ибо выражения
> плана:
> if (SomeVariable <> nil) and (SomeVariable.SomeParams <>
> nil) then
> там рассованы по всему коду.
>
>

Меня всегда напрягали такие места. И обычно всегда я переписывал на 2 штуки IF. От греха.


 
antonn ©   (2011-12-22 23:41) [138]

не знаю кому как, а мне перебор по for дает больше уверенности в переборе именно по индексу, foreach до сих пор (5 лет с пхп) просто внутренне не дает уверенности в порядке перебора в той последовательности что они поступали в список :)


 
jack128_   (2011-12-22 23:46) [139]


> а мне перебор по for дает больше уверенности в переборе
> именно по индексу, foreach до сих пор (5 лет с пхп) просто
> внутренне не дает уверенности в порядке перебора в той последовательности
> что они поступали в список :)

Это фобии.

Как сам класс коллекции реализовал GetEnumerator()/GetItem(Index: Integer)  в таком порядке и будет перебор, никаких преимуществ у перебора по индексу тут нету.


 
Игорь Шевченко ©   (2011-12-22 23:47) [140]


> foreach до сих пор (5 лет с пхп) просто внутренне не дает
> уверенности в порядке перебора в той последовательности
> что они поступали в список


И не должен


 
DVM ©   (2011-12-22 23:51) [141]


> antonn ©   (22.12.11 23:41) [138]


> foreach до сих пор (5 лет с пхп) просто внутренне не дает
> уверенности в порядке перебора в той последовательности
> что они поступали в список :)

а for разве тебе переберет их в той последовательности что они поступали?


 
antonn ©   (2011-12-22 23:59) [142]


> Это фобии.
>

наверное, но по индексу как-то спокойнее :)


 
DiamondShark ©   (2011-12-23 00:02) [143]


> не знаю кому как, а мне перебор по for дает больше уверенности
> в переборе именно по индексу,

А зачем вообще нужен перебор по индексу? Я ещё понимаю, если перебор по значению ключевого атрибута. Но в 99.999% случаев индекс в коллекции не имеет никакого смыслового отношения к элементам коллекции.


> foreach до сих пор (5 лет с пхп) просто внутренне не дает
> уверенности в порядке перебора в той последовательности
> что они поступали в список :)

Создай TStringList, задай Sorted := true и твой любимый индекс не будет иметь никакого отношения к последовательности поступления.

Коллекция с гарантированным порядком элементов -- это более специализированный класс коллекций. Если твой код завязан на более специализированный клас, то он хуже генерализован и предъявляет более жёсткие требования к окружению. Что, в свою очередь, ухудшает переносимость, расширяемость и сопровождаемость.


 
DiamondShark ©   (2011-12-23 00:05) [144]

Удалено модератором
Примечание: оскорбление участников форума


 
antonn ©   (2011-12-23 00:05) [145]

путь и не нужен именно индекс в цикле, но при экспорте во всякие ексели для foreach() приходится заводить счетчик для номера строк.
но бывает и индекс нужен, например при пробеге цикла для двух списков с одинаковым содержимым


 
DiamondShark ©   (2011-12-23 00:10) [146]


> заводить счетчик для номера строк.

Дежа вю такое дежа вю.


> при пробеге цикла для двух списков с одинаковым содержимым

как это?


 
DVM ©   (2011-12-23 00:11) [147]


> DiamondShark ©   (23.12.11 00:05) [144]

Тебя послушать, так тут сплошные знахари и неучи собрались.


 
antonn ©   (2011-12-23 00:16) [148]


> Дежа вю такое дежа вю.

вставка в ячейку через одну начиная с определенной строки. м?


> как это?

два индексированных списка с одинаковым кол-вом элементов, так точнее


 
Anatoly Podgoretsky ©   (2011-12-23 00:31) [149]

> antonn  (23.12.2011 00:05:25)  [145]

Второй список лишний


 
antonn ©   (2011-12-23 00:41) [150]


> Anatoly Podgoretsky ©   (23.12.11 00:31) [149]
>
> > antonn  (23.12.2011 00:05:25)  [145]
>
> Второй список лишний

А в Эстонии тормозуха самая лучшая


 
antonn ©   (2011-12-23 00:43) [151]

Ах да, еще стоит подумать над ответом в [149], потому как два списка содержащих одни и теже значения вовсе не одно и тоже что один список с теми же значениями. В процессе работы с ними это может быть очень даже очевидно


 
Kerk ©   (2011-12-23 00:52) [152]

По теме всех этих ваших циклов
http://roman.yankovsky.me/?p=73


 
DiamondShark ©   (2011-12-23 01:18) [153]


> Kerk ©   (23.12.11 00:52) [152]

У Свидетелей Иеговы тоже есть книжка, в которой находятся цитаты на все случаи жизни.


 
Германн ©   (2011-12-23 02:14) [154]

Удалено модератором


 
Компромисс ©   (2011-12-23 10:59) [155]

Из ссылки Kerk ©   (23.12.11 00:52) [152]

Составьте список работников удовлетворяющих хотя бы одному из следующих критериев.
1) Работник занимает должность техника и зарабатывает не менее 6 долларов в час.
...
Уже одни эти результаты указывают на возможность определения языка программирования на естественном уровне более понятного для новичков.


Странный мужик этот ваш "Л.А. Миллер".
SQL уже придуман много лет назад с его
1) select firstName, lastName
from employee
where post_id in (select id from posts where lower(name) like "*technic*")
and hourPayment >= 6
order by 1,2


 
KilkennyCat ©   (2011-12-23 11:06) [156]

Удалено модератором


 
OW ©   (2011-12-23 11:23) [157]

Удалено модератором


 
Inovet ©   (2011-12-23 11:29) [158]

Удалено модератором


 
Inovet ©   (2011-12-23 11:30) [159]

Удалено модератором


 
Думкин ©   (2011-12-23 11:39) [160]

Удалено модератором



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

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

Наверх




Память: 0.83 MB
Время: 0.026 c
2-1325419670
elizaveta1541
2012-01-01 16:07
2012.04.29
Сохранение текстовых строк, введённых в RichEdit в файле


2-1325223160
И. Павел
2011-12-30 09:32
2012.04.29
Присвоить свойству COM-объекта Nothing из Delphi


2-1325437970
Каныбек
2012-01-01 21:12
2012.04.29
Возведение в квадрат и извлечение квадратного корня


15-1324549390
Раммер
2011-12-22 14:23
2012.04.29
Посоветуйте книжку по SQL.


2-1325371999
Gu
2012-01-01 02:53
2012.04.29
строки Xe2