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

Вниз

программирование IncDay-style   Найти похожие ветки 

 
Virgo_Style ©   (2011-09-02 22:04) [0]

if (somebool = false) then begin
 exit;
end;

if List.Count>0 then begin
 for i:=0 to List.Count-1 do begin
   if fileexists( List[i] ) then begin
     try
       DeleteFile( List[i] );
     except
     end;
   end;
 end;
end;


код слегка условный, но полностью передающий особенности стиля.
я не пойму, человеку посимвольно платили, или что это вообще такое?

p.s. На самом деле, проверка Count>0 имеет свое объяснение: кое-где бывало беззнаковым. Byte или word, к примеру. Видимо, автор обжегся однажды и далее дул на воду всегда.


 
Virgo_Style ©   (2011-09-02 22:07) [1]


> кое-где бывало


*кое-где i бывало


 
Игорь Шевченко ©   (2011-09-02 22:12) [2]


> или что это вообще такое?


http://lurkmore.ru/%D0%91%D1%8B%D0%B4%D0%BB%D0%BE%D0%BA%D0%BE%D0%B4


 
xayam ©   (2011-09-02 22:15) [3]


> *кое-где i бывало

знаковым?


 
asails   (2011-09-02 23:33) [4]


> xayam ©   (02.09.11 22:15) [3]

Не. Именно беззнаковым... Тогда да - грабли могут быть.


 
Германн ©   (2011-09-03 01:15) [5]

Если форматирование есть, значит не всё ещё потеряно. :)


 
Ega23 ©   (2011-09-03 10:05) [6]

Или пример на pascal:

var
 i: word;
begin
for i:=0 to List1.Count-1 do
 ShowMessage(List1.Items[i]);
...


   Если в списке было 0 элементов, компилятор выкидывал исключение о недопустимом индексе.

В данном случае из-за того, что i беззнакового типа, число List1.Count — 1, равное минус единице, автоматом преобразовывалось к тому же типу, что i, и становилось равным $FFFF. То есть данный код при пустом списке эквивалентен for i := 0 to $FFFF do… То есть будет пытаться перебрать ВСЕ значения i от 0 до $FFFF, выдав ошибку на первом же из них.


 
Дмитрий С ©   (2011-09-03 11:23) [7]

Вырывать код из контекста и говорить что он кривой имхо плохо.

P.S.
К тому же мы уже знаем, что
if somebool = false then
и
if not somebool then
это не одно и то же :)


 
DiamondShark ©   (2011-09-03 11:29) [8]


> for i:=0 to List1.Count-1 do

Must сдохнуть в диких корчах.

foreach (var elt in List1)
{
...
}

i, Count, 0, -1, Items[i], знаки, беззнаки -- это всё информационный мусор.
Правда, олдскульным кодерам, до сих пор фапающим на то, как они фортрановский код вручную перфорировали на карты пять километров в гору зимой, весь этот булшит необходим для надрачивания ЧСВ.


 
Дмитрий С ©   (2011-09-03 11:42) [9]


> DiamondShark ©   (03.09.11 11:29) [8]

Ахаха) А если надо все кроме первого или последнего элемента перечислить или каждый второй.


 
_Юрий   (2011-09-03 11:56) [10]


> http://lurkmore.ru/%D0%91%D1%8B%D0%B4%D0%BB%D0%BE%D0%BA%D0%BE%D0%B4


Статья чуть менее чем полностью состоит их взаимоисключающих параграфов


 
uw ©   (2011-09-03 11:58) [11]

Дмитрий С ©   (03.09.11 11:23) [7]

Когда не одно и то же - это и есть кривой код.


 
_Юрий   (2011-09-03 12:03) [12]


> Ахаха) А если надо все кроме первого или последнего элемента
> перечислить или каждый второй.


Вот интересно, для чего может понадобиться перечислить все кроме первого и последнего?


 
Дмитрий С ©   (2011-09-03 12:09) [13]


> Вот интересно, для чего может понадобиться перечислить все
> кроме первого и последнего?

Ну это сам придумаешь, я уверен.


 
Юрий Зотов ©   (2011-09-03 12:27) [14]


> Дмитрий С ©   (03.09.11 11:42) [9]
> А если надо все кроме первого или последнего элемента
> перечислить или каждый второй.


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

А вот скороспелки, ничего, кроме "надроченного ЧСВ", за плечами реально не имеющие, в таких случаях пишут что-то вроде сабжа.

LOL


 
Virgo_Style ©   (2011-09-03 12:30) [15]


> олдскульным кодерам


вот не надо этих... инсинуаций. Новые технологии и приемы нам совсем не чужды.

Например, очень удобно написать процедуру с параметром - анонимной процедурой, чтобы первая заворачивала вторую в try-except end.
Такой процедуре очень удобно передавать завернутые в анонимную процедуру StrToInt или там деление x на y в том случае, если y может оказаться нулем.


 
_Юрий   (2011-09-03 12:32) [16]


> Ну это сам придумаешь, я уверен.


Да вот как то не придумывается.
Каждый второй - еще может и придумаю, а тут - нет.

В общем то, в 99 процентах случаев детали реализации итератора не интересуют вовсе, то бишь таки да, информационный мусор


 
DiamondShark ©   (2011-09-03 13:01) [17]


> Дмитрий С ©   (03.09.11 11:42) [9]
> Ахаха) А если надо все кроме первого или последнего элемента перечислить или каждый второй.


А ещё круче, если надо чтобы перечисляемые индексы образовывали ряд Фибоначчи.

Ведь очевидно же, что линейный просмотр списка -- самый редкоиспользуемый сценарий. Гораздо чаще списки просматриваются со второго по предпоследний задом-наперёд в шахматном порядке.


> Юрий Зотов ©   (03.09.11 12:27) [14]
> делают это легко и просто. На автопилоте.

Покажите код, перечисляющий элементы TList, кроме первого и последнего.


 
DiamondShark ©   (2011-09-03 13:04) [18]


> Virgo_Style ©   (03.09.11 12:30) [15]

А что делает процедура-обёртка, если игрек таки ноль?


 
Virgo_Style ©   (2011-09-03 13:21) [19]


> А что делает процедура-обёртка, если игрек таки ноль?


Примерно то же, что и

try
 something:=x/y;
except
end;


, я полагаю.


 
Юрий Зотов ©   (2011-09-03 13:33) [20]


> DiamondShark ©   (03.09.11 13:01) [17]
> Покажите код, перечисляющий элементы TList, кроме первого
> и последнего.

Это шутка такая?

Поимка ручного льва в пустыне Сахара предоставляется читателю в качестве самостоятельного упражнения.


 
DiamondShark ©   (2011-09-03 13:43) [21]


> Virgo_Style ©   (03.09.11 13:21) [19]

facepalm.jpg


> Юрий Зотов ©   (03.09.11 13:33) [20]
> Это шутка такая?

Нет.
А почему вы спрашиваете?


 
Anatoly Podgoretsky ©   (2011-09-03 14:57) [22]

> _Юрий  (03.09.2011 12:03:12)  [12]

Тогда for I:= 7 to 13


 
Кто б сомневался ©   (2011-09-03 15:00) [23]

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

if not somebool then exit;

for i:=0 to List.Count - 1 do
begin
 if fileexists(List.[i] ) then
   DeleteFile( List[i] );
  < здесь можно обработку ошибок сделать на delete file, но смысла нет
end;

>>Покажите код, перечисляющий элементы TList, кроме первого и последнего.
Поражаюсь просто.

For i := 1 to Count - 2 do

Ну и проверки соответствующие на наличие этого диапазона.


 
uw ©   (2011-09-03 15:08) [24]

Юрий Зотов ©   (03.09.11 13:33) [20]

> DiamondShark ©   (03.09.11 13:01) [17]
> Покажите код, перечисляющий элементы TList, кроме первого
> и последнего.

Это шутка такая?

Поимка ручного льва в пустыне Сахара предоставляется читателю в качестве самостоятельного упражнения.


А это уж точно шутка, я полагаю. Во всяком случае, "метод" поиска льва в пустыне всегда считался шуткой :-)


 
uw ©   (2011-09-03 15:10) [25]

Кто б сомневался ©   (03.09.11 15:00) [23]

Пожалуй, и fileexists ни к чему, а?


 
Anatoly Podgoretsky ©   (2011-09-03 15:10) [26]

> Кто б сомневался  (03.09.2011 15:00:23)  [23]

разве Count - 2 не есть проверка на наличие этого на наличие


 
Кто б сомневался ©   (2011-09-03 15:20) [27]


> Пожалуй, и fileexists ни к чему, а?


Да верно. Ни к чему.


 
Кто б сомневался ©   (2011-09-03 15:23) [28]

if not somebool then exit;

for i:=0 to List.Count - 1 do
  if not DeleteFile( List[i] ) then
    raise exception ... или Result :=


 
uw ©   (2011-09-03 15:28) [29]

Кто б сомневался ©   (03.09.11 15:23) [28]
if not somebool then exit;

for i:=0 to List.Count - 1 do
 if not DeleteFile( List[i] ) then
   raise exception ... или Result :=


Я думаю, эту проблему можно решить более конкретно:

for i:=0 to List.Count - 1 do
 if not DeleteFile( List[i] ) then
   ОтказатьсяОтИдеиУдаленияФайлаКоторыйНиФигаНеУдаляетсяНиФига;


 
uw ©   (2011-09-03 15:28) [30]

Кто б сомневался ©   (03.09.11 15:23) [28]
if not somebool then exit;

for i:=0 to List.Count - 1 do
 if not DeleteFile( List[i] ) then
   raise exception ... или Result :=


Я думаю, эту проблему можно решить более конкретно:

for i:=0 to List.Count - 1 do
 if not DeleteFile( List[i] ) then
   ОтказатьсяОтИдеиУдаленияФайлаКоторыйНиФигаНеУдаляетсяНиФига;


 
Кто б сомневался ©   (2011-09-03 15:31) [31]


> uw ©   (03.09.11 15:28) [30]

Не то.

А если это файл менеджер - юзер нажмет удалить а файл не удалиться?
Юзер начнет истеречить.
Юзеру нужно показать причину.


 
uw ©   (2011-09-03 15:32) [32]

Если у юзера не работает ОС, то ему остаётся только предложить удавиться. Но как это сделать, если у юзера не работает ОС?


 
uw ©   (2011-09-03 15:33) [33]

Хотя да. Такое может быть.


 
Кто б сомневался ©   (2011-09-03 16:24) [34]


> uw ©   (03.09.11 15:32) [32]


Файл может не удаляться по нескольким причинам.
Он может открыт другой программой, либо у текущего юзера просто нет прав на удаление.
Предлагаешь юзеру гадать над каждый файлом?


 
_Юрий   (2011-09-03 16:30) [35]

Не совсем олдскульному программеру решение данной задачи видится примерно так:

if (someBool)
 list.ForEach(x => DeleteFile(x));


 
©   (2011-09-03 18:11) [36]

есть чем статью на лурке пополнить, да


 
uw ©   (2011-09-03 19:28) [37]

Кто б сомневался ©   (03.09.11 16:24) [34]
Файл может не удаляться по нескольким причинам.
Он может открыт другой программой, либо у текущего юзера просто нет прав на удаление.
Предлагаешь юзеру гадать над каждый файлом?


Да я уже согласился, честно. В [33].


 
©   (2011-09-03 20:40) [38]


> _Юрий   (03.09.11 16:30) [35]

как раз лисп изобрели заново :-)


 
_Юрий   (2011-09-04 14:00) [39]


> * ©   (03.09.11 20:40) [38]


Видимо, есть не только старая школа, но еще и древняя


 
TUser ©   (2011-09-04 21:16) [40]

А зачем делают переменную в цикле беззнакового типа? Приключений в жизни мало?



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

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

Наверх





Память: 0.55 MB
Время: 0.005 c
15-1315415185
ради бога!
2011-09-07 21:06
2011.12.25
Сотрудник съехал с катушек или злой умысел?


2-1316479455
FZT
2011-09-20 04:44
2011.12.25
ПРоблемы с указателями


15-1314966325
oldman
2011-09-02 16:25
2011.12.25
Может кому и пригодится...


15-1315402684
Jeer
2011-09-07 17:38
2011.12.25
Зачетный HTML 5


4-1252568961
Гриня
2009-09-10 11:49
2011.12.25
Взаимодействие с Opera





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