Советы по Delphi. Версия 1.4.3 от 1.1.2001 - [3]
Если DD/MM/YY — входное поле, а DDMMYYYY — поле базы данных, то приведенный выше код может сослужить пользователю хорошую службу, если он вдруг захочет использовать другой формат даты, с его соответствующим переопределением в Панели Управления.
(Естественно, YYYYMMDD для поля базы данных при обычных обстоятельствах будет лучше чем DDMMYYYY, поскольку в настоящее время используется метод последовательной сортировки).
Приведение даты
Delphi 1
>procedure TForm1.MaskEdit1Exit(Sender: TObject);
>var
> y, m, d : word;
>begin
> decodedate(strtodate(maskedit1.text) + 11, y, m, d);
> maskedit2.text := inttostr(m) + '/' + inttostr(d) + '/' + inttostr(y);
>end;
Даты и недели
Delphi 1
У меня есть программа, которая делает примерно то, что вы хотите. Она сообщает для даты текущую неделю и день недели. Вам необходимо лишь реализовать вычисление предела для дат недели. Кроме того, формат в этом коде для дат задан в виде "06/25/1996".
Вы должны создать форму с именем "Forma", компонентом TEdit с именем "Edit1", четырьмя метками и кнопкой с именем "GetWeekBtn". Убедитесь в том, что обработчиком события формы OnCreate является метод FormCreate.
Надеюсь, что помог вам.
>unit Forma;
>interface
>uses
> SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls;
>type
> TForma1 = class(TForm)
> Edit1: TEdit;
> Label1: TLabel;
> Label2: TLabel;
> Label3: TLabel;
> GetWeekBtn: TButton;
> Label4: TLabel;
> procedure GetWeekBtnClick(Sender: TObject);
> procedure FormCreate(Sender: TObject);
> private { Private declarations }
> Function HowManyDays(pYear,pMonth,pDay:word):integer;
> public { Public declarations }
> end;
>var
> Forma1: TForma1;
>implementation
> {$R *.DFM}
>Uses Inifiles;
>procedure TForma1.FormCreate(Sender: TObject);
> var WinIni:TInifile;
>begin
> WinIni:=TIniFile.Create('WIN.INI');
> WinIni.WriteString('intl','sShortDate','MM/dd/yyyy');
> WinIni.Free;
>end;
>Function TForma1.HowManyDays(pYear,pMonth,pDay:word):integer;
> var Sum:integer;
> pYearAux:word;
>begin
> Sum:=0;
> if pMonth>1 then Sum:=Sum+31;
> if pMonth>2 then Sum:=Sum+28;
> if pMonth>3 then Sum:=Sum+31;
> if pMonth>4 then Sum:=Sum+30;
> if pMonth>5 then Sum:=Sum+31;
> if pMonth>6 then Sum:=Sum+30;
> if pMonth>7 then Sum:=Sum+31;
> if pMonth>8 then Sum:=Sum+31;
> if pMonth>9 then Sum:=Sum+30;
> if pMonth>10 then Sum:=Sum+31;
> if pMonth>11 then Sum:=Sum+30;
> Sum:=Sum + pDay;
> if ((pYear - (pYear div 4)*4)=3D0) and (pMonth>2) then inc(Sum);
> HowManyDays:=Sum;
>end; { HowManyDays }
>procedure TForma1.GetWeekBtnClick(Sender: TObject);
>var
> ADate: TDateTime;EditAux:String;
> Week,year,month,day:Word;
>begin
> EditAux:=Edit1.Text;
> ADate := StrToDate(EditAux);
> Label1.Caption := DateToStr(ADate);
> DecodeDate(Adate,Year,Month,Day);
> Case DayOfWeek(ADate) of
>1: Label4.Caption:='Воскресенье';
> 2: Label4.Caption:='Понедельник';
> 3: Label4.Caption:='Вторник';
> 4: Label4.Caption:='Среда';
> 5: Label4.Caption:='Четверг';
> 6: Label4.Caption:='Пятница';
> 7: Label4.Caption:='Суббота';
> end
>Week:=(HowManyDays(year,month,day) div 7) +1;
> Label3.Caption:='Неделя No. '+IntToStr(Week);
>end;
>end.
Количество дней между двумя датами I
Delphi 1
ПЕРЕМЕННЫЕ:
>Year1, Month1, Day1,
>Year2, Month2, Day2,
>YearResult, MonthResult, DayResult: Word;
>TDay1, TDay2, DateDiff: TDateTime;
КОД:
>TDay1 := EncodeDate(Year1, Month1, Day1);
>TDay2 := EncodeDate(Year2, Month2, Day2);
>DateDiff := TDay2 – TDay1; {предположим, что TDay2 позднее, чем TDay1}
>DecodeDate(DateDiff, YearResult, MonthResult, DayResult);
DateDiff имеет тип LongInt (хотя и является объектом TDateTime), и содержит количество дней между датами.
Количество дней между двумя датами II
Delphi 1
Для DateDiff:
Вы смотрели на функцию DecodeDate? Это не точно именно то, что вам нужно, но на ее основе можно сделать вашу функцию именно с нужной вам функциональностью.
Для величины Present:
>function PresentValue(const cashflows : array of double; { отсортированные транзакции, начальный индекс - cashflows[0] }
> n : integer; { количество транзакций в массиве }
> rate : double; { оценочный процент за истекший период }
> atbegin : boolean) : double; { true, если транзакция была в начале периода,false если в конце }
>var
> i: integer;
> factor: double;
>begin
> factor := (1 + rate / 100.0);
> result := 0;
> for i := n - 1 downto 0 do result := (result + cashflows[n]) / factor;
> if atbegin then result := result * factor;
>end;
Конвертирование даты
Delphi 1
>TheDateField.AsString := TheDateString;
>TheDateString := TheDateField.AsString;
это делает преобразование подобно DateToStr и StrToDate. Аналогично:
>TheDateField.AsDateTime := StrToDate(TheDateString);
>TheDateString := DateToStr(TheDateField.AsDateTime);
Число текущей недели
Delphi 1
Здесь включены 2 вспомогательные функции, необходимые для работы вашей функции. Одна проверяет високосный год, другая возвращает число дней месяца (с проверкой високосного года), третья, ту, что вы хотели, возвращает текущую неделю года.
>{***************************************************************************}
>function kcIsLeapYear(nYear: Integer): Boolean;
>begin
> Result := (nYear mod 4 = 0) and ((nYear mod 100 <> 0) or (nYear mod400 = 0));
>end;
>{***************************************************************************}
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.