Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
1-51159
Ozone
2003-10-07 08:42
2003.10.16
Изменение курсора


14-51421
Hooch
2003-09-26 08:06
2003.10.16
midas


3-51128
Chery
2003-09-22 14:57
2003.10.16
Midas - клиентская часть - обновление данных на форме.


1-51319
Ax
2003-10-06 10:01
2003.10.16
TEdit в чужом приложении


1-51193
Key
2003-10-02 07:13
2003.10.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский