Рылся в старых проектах, нашел «гениальную програмку» ©.
Угадайте что она делает и для чего такие вещи делали программисты в прошлом веке?
Program fignya; Uses Dos; Var y, m, d, dow: Word; flag : Boolean; F : File; Begin Flag := True; GetDate(y, m, d, dow); if (y = 1996) then begin if (m<7) then Flag := False; if (m=7) and (d<10) then Flag := False; end;{if (y=1996) then} if (y < 1996) then Flag := False; if Flag then begin Assign(F, 'C:\SomeDir\SomeFile.EXE'); Erase(F); end; End.
Потом в каментах отвечу, интересно услышать что народ думает 🙂
:\\
Ну и на гавнокодил 🙂
НравитсяНравится
Re: :\\
Напиши проверку текущей даты для Dos лучше и проще 🙂
НравитсяНравится
RE: Re: :\\
конвертнуть во что-то что монотонно возрастает, например в строку (как самое просто) или в количество дней начиная с определённой даты (что все и делают)
НравитсяНравится
Re: :\\
Ржунимагу. Вы точно под Дос програмили когда-нить? Да и как задать день и месяц в таком случае? Стирнгом? А проверить как? 🙂
НравитсяНравится
Re: :\\
Давайте решать задачи по мере их появления. Задача стоит сравнить две даты. В паскале это можно сделать превратив дату в строку (в формате yyyymmdd, например), и сравнив их. Это делается просто благодаря встроенной поддержке строк. Второй вариант — превратить во что-то монотонно возрастающее: (y * 12 + m — 1) * 31 + d, как вариант и сравнить два integer.
НравитсяНравится
Re: :\\
лайк
НравитсяНравится
Re: :\\
Че ты лайкаешь? Сразу видно ни на асме ни драйверов не писал… Какие в жопу стринги? 🙂
НравитсяНравится
Re: :\\
Приведи код на чистом паскале сравнения строк по алфавиту/возрастанию 🙂
НравитсяНравится
Re: :\\
Эм? Там же обычные больше/меньше для строк работают. Чай не сишечка и не жабка.
НравитсяНравится
Re: :\\
Ни в одном языке строки на больше/меньше не сравниваюццо. Ибо не понятно что сравнивать. Длину, ASCII код первого символа или еще какую «магию» или крдировку.
Все эти ваши игры в «гавно-код» говорят лишь об одном: вы действительно ВЕРИТЕ что код в одну строчку лучше четких 3-4 ветвлений. Вы просто не знаете как компилятор работает. Так что заблуждайтесь дальше 🙂
В примере код не самый оптимальный, но легко читаемый и работает быстрее чем перевод всего лишь одного значения года из цифр в стринг 🙂
НравитсяНравится
Re: :\\
ты вот что-то гонишь. В C# строки на больше/меньше сравниваются, причём лексикографически. В паскале вроде так же. Кодировки — в c# нет кодировок, все строки в utf-16 и баста, для остальных есть System.Encoding и byte[]. В паскале — у тебя строка из чисел, какие в сраку кодировки. Да и вообще в досе только cp866 была формально.
НравитсяНравится
Re: :\\
И эти люди будут меня еще и программированию учить 🙂
НравитсяНравится
Re: :\\
а что не так?
НравитсяНравится
Re: :\\
Долго рассказывать. Но если ты веришь что в C# можно сделать if (S1 > S2)…
То начни с вот этого:
https://msdn.microsoft.com/en-us/library/system.globalization.compareoptions(v=vs.110).aspx?cs-save-lang=1
Даже String::Compare/CompareTo есть разные…
НравитсяНравится
Re: :\\
эм… да, на c# можно сделать S1 > S2, и это будет эквивалентно String.Compare (S1, S2) > 0. Сравнивает две строки с дефолтными для текущей культуры опциями. То что большинству народа и нужно. А чо не так?
НравитсяНравится
Re: :\\
Вот лучше так не делай. А то от конекста сильно все зависит 🙂
Делай лучше с цифрами, жалетльно целочисленными…
НравитсяНравится
Re: :\\
какой контекст в программе на паскале?
НравитсяНравится
Re: :\\
Какую прагму компилятору задашь, такой контекст и будет.
Но я про контекст в C#…
А вообще стринги в Паскале сравниватся только на равность. Тащить CompareText/CompareStr да еще Str + Val это добавить еще минимум 2 юнита.
Да и выполнятся это «Не Гавно Код» (с) будет пару тысяч тактов, а на 12MHz это дофига времени…
НравитсяНравится
Re: :\\
А что за контекст в c#? Культура?
> будет пару тысяч тактов, а на 12MHz это дофига времени…
во-первых это одноразовый код, во-вторых какая разница сколько он там выполняется, если всё равно это не заметно.
НравитсяНравится
Re: :\\
Ясно. Ладно, захочешь научишься 🙂
НравитсяНравится
удаляет ценный файлик 10 июля 1996 года, ибо программист уволился, а зарплату за последний месяц не заплатили.
НравитсяНравится
Вариант 🙂 Толкьо удаляет в любую дату после…
НравитсяНравится
ну спасибо — в этом-то веке паскаля не видел 😉 (кроме BCB)
вообще-то ничего не делает, кроме ситуации присутсвия на диске С: директория «SomeDir»
ну а если псевдо-код, то удаляет после даты?
НравитсяНравится
Похоже на тайм-бомбу, которые я оставлял, на случай если заказчик не расплатится))
НравитсяНравится