Форум: "Потрепаться";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];
ВнизНарод, дайте кусок кода, может у кого есть такой. Найти похожие ветки
← →
ZeroDivide (2003-09-29 13:10) [0]На входе Date, на выходе Даты начала и конца квартала, в который этот Date попал. Написал бы сам, только влом писать то что уже кем то написано. А задача такая, думаю довольно часто встречается.
Надо отчетец забабахать, а там средний размер money считается - квартальный.
← →
Mike Kouzmine (2003-09-29 13:13) [1]pol"zovat"sja spravochnoiy literaturoiy, to on objazan nauchitsja. Esli ne hochet to flag emu v ruki, tri pera v zadnicu i parovoz na vstrechu.
Dej`urstvo v chate bessmyslenno, tak kak
Код не мой, но, думаю, ты разберешься.
← →
Е-Моё имя (2003-09-29 13:15) [2]it;
end;
function TXMLDSOControlProperties.Get_readyState: Integer;
begin
Result := DefaultInterface.readyState;
end;
{$ENDIF}
class function CoXMLDocument.Create: IXMLDocument2;
begin
Result := CreateComObject(CLASS_XMLDocument) as IXMLDocument2;
end;
class function CoXMLDocument.CreateRemote(const MachineName: string): IXMLDocument2;
begin
Result := CreateRemoteComObject(MachineName, CLASS_XMLDocument) as IXMLDocument2;
end;
procedure TXMLDocument.InitServerData;
const
CServerData: TServerData = (
ClassID: "{CFC399AF-D876-11D0-9C10-00C04FC99C8E}";
IntfIID: "{2B8DE2FE-8D2D-11D1-B2FC-00C04FD915A9}";
EventIID: "";
LicenseKey: nil;
Version: 500);
begin
Se
← →
Е-Моё имя (2003-09-29 13:16) [3]ой, я кажеца не до конца вопрос дочитал...
← →
Е-Моё имя (2003-09-29 13:19) [4]давайте устроим соревнование по скорости написания нужного кода
игра "напиши код"
я напишу этот код за 70 секунд
кто меньше?
← →
Mike Kouzmine (2003-09-29 13:20) [5]Я
← →
Е-Моё имя (2003-09-29 13:20) [6]сколько?
← →
ZeroDivide (2003-09-29 13:27) [7]Е-Моё имя © (29.09.03 13:20)
70 секунд прошло :)
← →
Mike Kouzmine (2003-09-29 13:28) [8]На 1 меньше, чем кто-либо.
← →
Игорь Шевченко (2003-09-29 13:29) [9]Не позволяй душе лениться,
Лупи лентяйку сгоряча,
Душа обязаноа трудиться
На производстве кирпича.
← →
Dmitriy O. (2003-09-29 13:33) [10]А вот на этом сайте в разделе программы есть какаято для управлениями датами в отчетах.
← →
ZeroDivide (2003-09-29 13:53) [11]Игорь Шевченко © (29.09.03 13:29)
Да, я тоже Башлачева люблю...
А лень меня сегодня съедает, потому что понедельник. А вообще просто бесит когда пишешь и натыкаешься на такую вот туфту, для которой ничего уже готового нет.
← →
Е-Моё имя (2003-09-29 14:06) [12]
> [8] Mike Kouzmine © (29.09.03 13:28)
> На 1 меньше, чем кто-либо.
пиши =))))))))
← →
Игорь Шевченко (2003-09-29 14:11) [13]ZeroDivide © (29.09.03 13:53)
А...по месяцу не судьба ?
if Month >= 1 and Month < 4 then первый квартал
и т.д. Тупо и просто...
← →
stone (2003-09-29 14:14) [14]DecodeDate +
case Month of
1..3
2..6
3..9
10..12
end;
← →
ZeroDivide (2003-09-29 14:28) [15]Игорь Шевченко © (29.09.03 14:11)
stone © (29.09.03 14:14)
Круто, но вопрос надо было прочитать "на выходе Даты начала и конца квартала"
В общем ладно, спасибо за то что постебались, если я для этого повод дал :( Хотя когда то, очень давно, я думал что форумы программистов, для того чтобы помочь друг другу, а не прикалываться. В общем, победил я свою лень, вот:
procedure GetQuarterDates(QDate: TDate; out ADateFrom, ADateTo: TDate);
var
Year, Month: string;
n: integer;
begin
Month := Copy(DateToStr(QDate), 4, 2);
Year := Copy(DateToStr(QDate), 7, 4);
n := 1;
while not ((QDate > ADateFrom) and (QDate < ADateTo)) do
begin
ADateFrom := StrToDate("01."+IntToStr(n)+"."+Year);
if n = 10 then
ADateTo := StrToDate("31.12."+Year)
else
ADateTo := StrToDate("01."+IntToStr(n+3)+"."+Year) - 1;
n := n + 3;
end;
end;
← →
Е-Моё имя (2003-09-29 14:33) [16]понятней был бы вариант [13] или [14]
ну и сколько секунд заняло написание процедуры?
← →
Nikolay M. (2003-09-29 14:34) [17]Не вчитываясь особо в алгоритм, сразу бросается в глаза, что работоспособность функции прямо пропорционально зависит от формата региональных настроек винды...
← →
ZeroDivide (2003-09-29 14:36) [18]Точнее месяц даже не нужен, вот так:
procedure GetQuarterDates(QDate: TDate; out ADateFrom, ADateTo: TDate);
var
Year: string;
n: integer;
begin
Year := Copy(DateToStr(QDate), 7, 4);
n := 1;
while not ((QDate > ADateFrom) and (QDate < ADateTo)) do
begin
ADateFrom := StrToDate("01."+IntToStr(n)+"."+Year);
if n = 10 then
ADateTo := StrToDate("31.12."+Year)
else
ADateTo := StrToDate("01."+IntToStr(n+3)+"."+Year) - 1;
n := n + 3;
end;
end;
← →
Е-Моё имя (2003-09-29 14:39) [19]а без строк никак?
← →
ZeroDivide (2003-09-29 14:42) [20]Е-Моё имя © (29.09.03 14:33)
Дело не в том сколько это секунд занимает, а в том, что это туфта, которая ИМХО, должна быть в каком-нибудь utils.pas Об этом не должно быть необходимости думать.
← →
Игорь Шевченко (2003-09-29 14:43) [21]ZeroDivide © (29.09.03 14:28)
Да...
Сколько всего кварталов ? Правильно, четыре. Даты начала и конца у них одинаковые (01.01-31.03,01.04-30.06,etc)
Тебе надо подставить год из твоей даты и по case от месяца выбрать номер квартала, а дальше два раза EncodeDate для начальной и конечной даты квартала. И не надо StrToDate, которая будет вести себя по-разному на разных настройках Windows
← →
Nikky (2003-09-29 14:44) [22]
> ZeroDivide © (29.09.03 14:36) [18]
взрослый дядька, а такую хрень пишем-с;)
← →
ZeroDivide (2003-09-29 14:45) [23]Типа давайте еще Copy или Pos писать каждый раз, вместо того чтобы использовать их из System.pas, тогда это не RAD программирование будет, а АД (в смысле HELL).
← →
stone (2003-09-29 14:46) [24]
procedure TForm1.GetQuarterDates(QDate: TDate; out ADateFrom,
ADateTo: TDate);
var
Year, Month, Day: Word;
begin
DecodeDate(QDate, Year, Month, Day);
case Month of
1..3 : begin
ADateFrom := EncodeDate(Year, 1, 1);
ADateTo := EncodeDate(Year, 3, 31);
end;
4..6 : begin
ADateFrom := EncodeDate(Year, 4, 1);
ADateTo := EncodeDate(Year, 6, 30);
end;
7..9 : begin
ADateFrom := EncodeDate(Year, 7, 1);
ADateTo := EncodeDate(Year, 9, 30);
end;
10..12 : begin
ADateFrom := EncodeDate(Year, 10, 1);
ADateTo := EncodeDate(Year, 12, 31);
end;
end;
end;
← →
Е-Моё имя (2003-09-29 14:47) [25]
> [20] ZeroDivide © (29.09.03 14:42)
> Е-Моё имя © (29.09.03 14:33)
> Дело не в том сколько это секунд занимает, а в том, что
> это туфта, которая ИМХО, должна быть в каком-нибудь utils.pas
> Об этом не должно быть необходимости думать.
дело в том, что здесь НЕГДЕ думать
ИМХО
← →
Е-Моё имя (2003-09-29 14:48) [26]
> [24] stone © (29.09.03 14:46)
во! именно такой вариант я и предполагал, когда говорил о 70 секундах ))
← →
ZeroDivide (2003-09-29 14:59) [27]Игорь Шевченко © (29.09.03 14:43)
Может еще расскажешь, как это я подставлю год из своей даты без StrToDate?
И вобще нафиг мне знать 31 или 30 там в конеце, если уж мне влом сегодня прогу писать, мне подавно влом в календарик смотреть. А так - все работает.
А DateSeparator global variable - это точка. У кого не точка - тот сам себе злобный буратино. (У всех наших юзеров - точка)
← →
Игорь Шевченко (2003-09-29 15:03) [28]ZeroDivide © (29.09.03 14:59)
см. stone © (29.09.03 14:46) [24]
> Может еще расскажешь, как это я подставлю год из своей даты
> без StrToDate?
> И вобще нафиг мне знать 31 или 30 там в конеце, если уж
> мне влом сегодня прогу писать, мне подавно влом в календарик
> смотреть.
> А DateSeparator global variable - это точка. У кого не точка
> - тот сам себе злобный буратино. (У всех наших юзеров -
> точка)
Я не понял, это у тебя разводка такая хитрая ? Колись..
← →
ZeroDivide (2003-09-29 15:04) [29]stone © (29.09.03 14:46)
О, thnx, за устранение пробела в моих знаниях (En[De]codeDate).
← →
Е-Моё имя (2003-09-29 15:05) [30]мда................................
← →
ZeroDivide (2003-09-29 15:12) [31]Игорь Шевченко © (29.09.03 15:03)
Это не разводка. Stone написал все правильно, просто ветка слишком быстро развивалась, я не успел прочитать.
Век живи, век учись... и помрешь этим самым.. :)
← →
Е-Моё имя (2003-09-29 15:17) [32]
Object Pascal, С++,
ASM(z80, x86+technologies), PL/SQL,
RLisp, Basic"s.
Object Pascal + ASM forever
и при этом пишем такой код... понятненько...
← →
ZeroDivide (2003-09-29 15:27) [33]И где ты там увидел Delphi Libraries? Я не знаю всех функций всех библиотек и даже знать их не хочу, это справочный материал. Или это новый повод для приколов?
А то, что написано в анкете, все так и есть.
← →
Е-Моё имя (2003-09-29 15:33) [34]да я не про библиотеки
я в алгоритм [18] за 2 сек не въехал (может я тупой-спорить не буду), и дальше пытаться не стал
алгоритм [24] понятен с первого взгляда
ладно, все , не хочу спорить
я козел, тупой ишак и придурок, и на этом спор заканчиваем ;)
← →
NAlexey (2003-09-29 16:28) [35]>я козел, тупой ишак и придурок
Ну что за самооценка, любо дорого посмотреть.
← →
Е-Моё имя (2003-09-29 16:42) [36]
> [35] NAlexey © (29.09.03 16:28)
правильно, дорого
с тебя 100 $
=)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.01 c