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

Вниз

Самые распространенные дельфийские заблуждения   Найти похожие ветки 

 
Petr V. Abramov ©   (2007-11-11 03:26) [80]

> Leonid Troyanovsky ©   (11.11.07 03:19) [78]
приятное с полезным.
> Пункт первый
N малое. программировать на Delphi - это кидать что-то непонятное на форму.
N малое 1. Если хелп на непонятном языке, его не надо читать
N малое 2. Если забить на умершее Delphi и перейти на живую жабу или vs, что-нить поменяется


 
{RASkov}   (2007-11-11 03:29) [81]

> [80] Petr V. Abramov ©   (11.11.07 03:26)
> Если хелп на непонятном языке, его не надо читать

А как же его читать если язык непонятный? :) Был бы хотя-бы англ, то хоть перевести можно было б
:о)


 
Petr V. Abramov ©   (2007-11-11 03:31) [82]

> {RASkov}   (11.11.07 03:29) [81]
идентифицировать язык и достать английский хелп


 
Германн ©   (2007-11-11 03:31) [83]


> {RASkov}   (11.11.07 03:25) [79]
>
> > [77] Германн ©   (11.11.07 03:17)
> > Зависит от атмосферного давления, температуры воздуха,
>  возраста бабушки соседа слева и т.п.
>
> Т.е. заблуждение в том что   всегда вертает кол-
> во записей в таблице?
>

Хм. RecordCount - это свойство TDataSet. А DataSet не обязательно таблица.


 
Riply ©   (2007-11-11 03:34) [84]

А можно и я свои пять копеек добавлю:
Крутые прогеры пишут на чистом API.


 
Petr V. Abramov ©   (2007-11-11 03:35) [85]

Крутые прогеры пишут чисто на  API.


 
{RASkov}   (2007-11-11 03:36) [86]

> [83] Германн ©   (11.11.07 03:31)
> Хм. RecordCount - это свойство TDataSet

Ну я про него и имел ввиду.
Т.е. свойство в любом случае вернет некое кол-во записей в ДатаСете ) Пусть под фильтр не попала не одна запись, но 0 - это тоже же кол-во...


 
Германн ©   (2007-11-11 03:36) [87]


> Petr V. Abramov ©   (11.11.07 03:26) [80]

В плане "Anatoly Podgoretsky ©   (11.11.07 02:34) [49]"
перефразирую твоё высказывание.
"Хелп не надо читать, поскольку он написан на непонятном языке".


 
Leonid Troyanovsky ©   (2007-11-11 03:37) [88]

Получилось примерно так

Для классного программиста F1 - не кнопка, хелп - не указ, а мсдн - не догма.
Малый размер exe, иконка в трее и защита программы - главное для классного программиста.
За создание объектов и выделение памяти отвечает Пушкин.
Если существует переменная Form1, то ее надо пользовать.
Деструктор обнуляет ссылку на объект.
В DBGrid есть данные, RecordCount возвращает количество записей.
Можно смело разбивать приложения на exe и dll, и передавать между ними классы.
Обрабатывать исключения надо так, чтобы никто о них не догадался.
Разность двух дат лучше всего представить в годах, месяцах и днях.

Итак, есть еще один пункт.
Оставим его на утро, бо оно мудренее.

--
Regards, LVT.


 
Riply ©   (2007-11-11 03:37) [89]

> [85] Petr V. Abramov ©   (11.11.07 03:35)
> Крутые прогеры пишут чисто на  API.

Не, твое предложение хуже. Его можно понять как "пишут на API без ошибок" :)


 
Riply ©   (2007-11-11 03:39) [90]

> [88] Leonid Troyanovsky ©   (11.11.07 03:37)
> За создание объектов и выделение памяти отвечает Пушкин.

А кто отвечает за освобождение памяти ?


 
Petr V. Abramov ©   (2007-11-11 03:39) [91]

> Riply ©   (11.11.07 03:37) [89]
дак это и имелось в виду. "и сразу" забыл добавить в конце :)


 
Германн ©   (2007-11-11 03:40) [92]


> Riply ©   (11.11.07 03:39) [90]
>
> > [88] Leonid Troyanovsky ©   (11.11.07 03:37)
> > За создание объектов и выделение памяти отвечает Пушкин.
>
>
> А кто отвечает за освобождение памяти ?
>

Гоголь, разумеется!
:-)


 
{RASkov}   (2007-11-11 03:41) [93]

> В DBGrid есть данные, RecordCount возвращает количество записей.

В DBGrid есть данные(записи), а RecordCount возвращает их количество.
Во)


 
Leonid Troyanovsky ©   (2007-11-11 03:44) [94]


> Riply ©   (11.11.07 03:34) [84]

> Крутые прогеры пишут на чистом API.

Хороший довесок, но пока не знаю куда б его приспособить :)

--
Regards, LVT.


 
Германн ©   (2007-11-11 03:45) [95]


> Leonid Troyanovsky ©   (11.11.07 03:37) [88]


> Разность двух дат лучше всего представить в годах, месяцах
> и днях.
>

Я против такой формулировки как "негативной". Поскольку очень часто используется в быту формулировка типа: мне, моему ребёнку (и т.п.) столько то лет, месяцев и дней от роду.


 
Petr V. Abramov ©   (2007-11-11 03:51) [96]

Германн ©   (11.11.07 03:45) [95]
если вычесть из одной даты другую, мы получим их разность в рабочих днях с учетом всех законов страны, где находится юзер. А в дни годы, месяцы и дни Delphi само переведет.


 
Leonid Troyanovsky ©   (2007-11-11 03:51) [97]


> Германн ©   (11.11.07 03:45) [95]

> Я против такой формулировки как "негативной". Поскольку
> очень часто используется в быту формулировка типа

Т.е., ты часто употребляешь такое: "я старше своего ребенка
на ..лет, месяцев, дней"? :)

--
Regards, LVT.


 
Германн ©   (2007-11-11 04:03) [98]


> Leonid Troyanovsky ©   (11.11.07 03:51) [97]

Не. Не часто.
Я очень не хотел ввязываться в обсуждение http://delphimaster.net/view/2-1194516434/
но похоже придётся.
Там кто-то высказался про функцию типа DateDiff.
Не знаю как в JEDI, но в RxLib она вычисляет разницу именно на бытовом уровне.
1. сколько лет
2. сколько месяцев
3. сколько дней.

А арифметика тут побоку, имхо. Так же как и календарь.


 
homm ©   (2007-11-11 08:25) [99]

Разрешите отсебятину %)

н. Размер программы на дельфи получается большой, и с этим ничего нельзя поделать.
Можно даже объеденить с тем, что дельфи дает медленный код.


 
Sergey Masloff   (2007-11-11 08:36) [100]

>1. Разность двух дат может быть представлена в годах, месяцах и днях.
Конечно может. Это даже не ИМХО. Иначе бы ни одна финансовая система автоматизации не работала бы. То что в дельфи нет соответствующей функции - ну так написать не очень сложно. В чем заблуждение?


 
Sergey Masloff   (2007-11-11 08:59) [101]

На дельфи транслируется в полпинка

create or replace function Months_Between2(pDate2 in date, pDate1 in date) return number deterministic
is
 vM number;
-- Ðàññ÷èòûâàåò ÷èñëî ìåñÿöåâ ìåæäó äâóìÿ äàòàìè âêëþ÷èòåëüíî, íî, â îòëè÷èå îò
-- month_between êîððåêòíî ñ òî÷êè çðåíèÿ áèçíåñ-ëîãèêè ðàáîòàåò äëÿ ïîñëåäíèõ
-- äíåé "êîðîòêèõ" ìåñÿöåâ

begin
 -- â ñëó÷àå êîãäà pDate2 ïîñëåäíèé äåíü êîðîòêîãî ìåñÿöà
 if Months_Between(pDate2+1, Trunc(pDate2+1, "Y")) in (2,4,6,9,11) then
   vM := Months_Between(Trunc(pDate2, "MM"), Trunc(pDate1, "MM"));
   if Add_Months(pDate2-1, -vM) < pDate1 - 1 then
     return vM;
   else
     return Months_Between(pDate2+1, pDate1);
   end if;
 else
   return Months_Between(pDate2+1, pDate1);
 end if;
end;

create or replace function GetPeriodStr2(pDateBeg in date,  
                     pDateEnd in date
) return varchar2 deterministic
is
vMon number;
vYear number;
vD varchar2(10);
C_D varchar2(1):="&#228;";
C_M varchar2(1):="&#236;";
C_Y varchar2(1):="&#227;";
begin
 -- &#206;&#242;&#238;&#225;&#240;&#224;&#230;&#229;&#237;&#232;&#229; &#241;&#240;&#238;&#234;&#224; &#228;&#229;&#233;&#241;&#242;&#226;&#232;&#255; &#228;&#238;&#227;&#238;&#226;&#238;&#240;&#224; &#226; &#226;&#232;&#228;&#229; &#241;&#242;&#240;&#238;&#234;&#232;:
 -- &#205;&#224;&#239;&#240;&#232;&#236;&#229;&#240;: "12 &#236;", "3 &#236; 15 &#228; (105)", "6 &#228;" &#232; &#242;.&#239;.
 if (pDateBeg is null) or (pDateEnd is null) then
   return NULL;
 end if;

 if trunc(pDateEnd)<>pDateEnd then
   return to_char(trunc(pDateEnd-pDateBeg+1))||" "||C_D;
 end if;

 vD:=" ("||To_Char(Trunc(pDateEnd)-Trunc(pDateBeg)+1)||")";

 vMon:=Months_Between2(Trunc(pDateEnd), Trunc(pDateBeg));

 if vMon=Trunc(vMon) then
   return To_Char(vMon)||" "||C_M||vD;
 end if;

 if vMon<1 then
   if Trunc(pDateEnd)=Trunc(pDateBeg) then
     return To_Char(Trunc(pDateEnd)-Trunc(pDateBeg))||" "||C_D;
   else
     return To_Char(Trunc(pDateEnd)-Trunc(pDateBeg)+1)||" "||C_D;
   end if;
 end if;
 
 vYear := trunc(vMon / 12);
 if (vYear > 1) then
   vMon := vMon - vYear * 12;
   return TO_Char(vYear)||" "||C_Y||" "To_Char(Trunc(vMon))||" "||C_M||" "||To_Char(Trunc(pDateEnd-Add_Months(Trunc(pDateBeg), Trunc(vMon))+1))||" "||C_D||vD;
 else
   return To_Char(Trunc(vMon))||" "||C_M||" "||To_Char(Trunc(pDateEnd-Add_Months(Trunc(pDateBeg), Trunc(vMon))+1))||" "||C_D||vD;
 end;  
end;


 
Sergey Masloff   (2007-11-11 09:02) [102]

select getperiodstr2("01-02-1900","01-03-2005") from dual
результат
105 г 1 м 1 д (38380)

Ну для разных лет менять г на л "оставляю на домашнее задание"


 
Sergey Masloff   (2007-11-11 09:05) [103]

Кстати в дополнение - может показаться ошибкой прибавление одного дня но тут все правильно (с точки зрения фин. систем) - с 01.01.2006 по 01.01.2006 а не 0. С 1 февраля по 1 марта 1 месяц и 1 день а не ровно месяц. Так что все корректно если у кого-то логика другая перерабатывайте ;-)


 
homm ©   (2007-11-11 09:20) [104]

select getperiodstr2("01-02-1900","01-03-2005") from dual
результат
105 г 1 м 1 д (38380)


ну дак а правильно 105 г 1 м 0 д.


 
Sergey Masloff   (2007-11-11 09:22) [105]

>homm ©   (11.11.07 09:20) [104]
Для тех кто в танке
Sergey Masloff   (11.11.07 09:05) [103]


 
Sergey Masloff   (2007-11-11 09:24) [106]

Ну или у вас проездной на февраль еще 1 марта действует тогда поздравляю


 
homm ©   (2007-11-11 09:24) [107]

Ок, а что выведет на getperiodstr2("01-02-1900","01-03-2003") ?
2004-й был был висакосным, значит результата должен быть 105 г 1 м 0 д


 
homm ©   (2007-11-11 09:25) [108]

> 2004-й был был висакосным, значит результата должен быть
> 105 г 1 м 0 д

103 г 1 м 0 д


 
Leonid Troyanovsky ©   (2007-11-11 09:43) [109]


> Германн ©   (11.11.07 04:03) [98]
Sergey Masloff   (11.11.07 08:36) [100]

http://delphimaster.net/view/2-1194516434/

Обещаю учесть результат.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-11-11 09:50) [110]

Итак, на настоящий момент имеем:

Классный программист никогда не ошибается, ему не нужен debuger,
Help ему не указ, MSDN - не догма, а пишет он на чистом API.

Малый размер exe, иконка в трее и защита программы - главное для классного программиста.

Главный враг классного программиста - тупой юзер (и ламерье, засевшее на DM).

За создание объектов и выделение памяти отвечает Пушкин, за все остальное - глючный Delphi.

Деструктор обнулит ссылку на объект.

Обрабатывать исключения надо так, чтобы никто о них не узнал.

Можно смело разбивать приложение на exe & dll и передавать между ними классы.

Если существует переменная Form1, то ее надо пользовать.

В DBGrid есть данные, RecordCount возвращает количество записей.

Разность двух дат лучше всего представить в годах, месяцах и днях.

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

--
Regards, LVT.


 
isasa ©   (2007-11-11 09:58) [111]

Sergey Masloff   (11.11.07 08:36) [100]
Формулировка

Leonid Troyanovsky ©   (11.11.07 00:26)  
1. Разность двух дат может быть представлена в годах, месяцах и днях.


Правильная, поскольку в ней идет речь о представлении готового результата(полученной разности, например, хранящейся в double== TDataTime). В этой ситуации предполагается, что информации о начале и конце периода может и не быть.

В вашем случае это операция с заранее заданным форматом резельтата.


 
homm ©   (2007-11-11 10:10) [112]

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

огие к дельфи вообще не имеют отношения.


 
boa_kaa ©   (2007-11-11 10:15) [113]

Предлагаю еще один пункт:

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


 
boriskb ©   (2007-11-11 10:17) [114]

А где же самое главное заблуждение?
"Я программист"
:)

А вобще - ветка классная.
Только доведите до конца :)


 
isasa ©   (2007-11-11 10:17) [115]

Филиал Что.Где.Когда?


 
Leonid Troyanovsky ©   (2007-11-11 10:18) [116]


> Leonid Troyanovsky ©   (11.11.07 09:50) [110]

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

Получается, что сначала нужно разобраться с тем, кто
есть классный программист. Например:


Классный программист никогда не ошибается, ему не нужен debuger,
Help ему не указ, MSDN - не догма, а пишет он на чистом API.

Малый размер exe, иконка в трее и защита программы - цели классного программиста.

Главный враг классного программиста - тупой юзер (и ламерье, засевшее на DM).

Главный друзья классного программиста - глобальнные переменные.

Он помнит, что за создание объектов и выделение памяти отвечает Пушкин, за все остальное - глючный Delphi.

Классный программист обрабатывает исключения  так, чтобы никто о них не узнал.

Классный никогда не сомневается в себе.


А прикладной уровень вывести куда-то в другой список,
с рабочим названием "страдания молодого чайника".

Т.о., разделение, видимо, неизбежно, и в главном списке
образовались незаполненные вакансии, ведь классно
было назвать сей документ: 10 заповедей КП.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-11-11 10:20) [117]


> boriskb ©   (11.11.07 10:17) [114]
> А где же самое главное заблуждение?
> "Я программист"

О..
Классный программист никогда не усомнится в том, что он
классный программист.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-11-11 10:35) [118]


> boa_kaa ©   (11.11.07 10:15) [113]

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

Может что-то вроде:
КП никогда не платит денег за техподдержку, не покупает компоненты,
и не нанимает менее класных программистов, потому, что и
так слишком много платит своему провайдеру.

Немного, правда, громоздко.

--
Regards, LVT.


 
Virgo_Style ©   (2007-11-11 10:37) [119]

> Riply ©   (11.11.07 03:39) [90]
> > За создание объектов и выделение памяти отвечает Пушкин.
>
> А кто отвечает за освобождение памяти ?


Дантес?


 
Sergey Masloff   (2007-11-11 10:43) [120]

Leonid Troyanovsky ©   (11.11.07 10:18) [116]
>Получается, что сначала нужно разобраться с тем, кто
>есть классный программист. Например:
Да это неплохая идея

>Классный программист никогда не ошибается, ему не нужен debuger,
>Help ему не указ, MSDN - не догма, а пишет он на чистом API.
Много заповеди д.б. краткими

1. К.П никогда не ошибается
2. К.П. обрабатывает исключения так чтобы никто не узнал

Это должно войти над остальным ИМХО работать. Про иконки в трее этио частности наверное нужно опустить, про тупых юзеров включить обязательно но формулировку нужно оттачивать ;-)



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

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

Наверх




Память: 0.7 MB
Время: 0.067 c
15-1195087241
Саунд
2007-11-15 03:40
2007.12.16
асм в делфи


2-1195648487
kudatsky
2007-11-21 15:34
2007.12.16
Ограничение на количество открытых DBF-файлов


2-1195122747
DDDeN
2007-11-15 13:32
2007.12.16
TProgressBar - соотнести клик мышкой и свойство Position


2-1195657827
webpauk
2007-11-21 18:10
2007.12.16
Наследование


3-1186755739
koss_
2007-08-10 18:22
2007.12.16
сортировка датасета





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