Советы по Delphi. Версия 1.4.3 от 1.1.2001 [Валентин Озеров] (fb2) читать постранично, страница - 3
[Настройки текста] [Cбросить фильтры]
- 1
- 2
- 3
- 4
- 5
- . . .
- последняя (179) »
Преобразование даты
Delphi 1procedure TForm1.Button1Click(Sender: TObject); var st,formatsave : string; DT : TDateTime; begin st := Edit1.text; // '1996-06-03 00.00.00' formatsave := ShortDateFormat; ShortDateFormat := 'yyyy.mm.dd hh.mm.ss'; while pos ('-', st) > 0 do st [pos ('-', st)] := '.'; DT := StrToDateTime(st); ShortDateFormat := formatsave; Label1.Caption := DateTimeToStr(DT); end;
Преобразование даты — добавление столетия
Delphi 1LongDate := FormatDateTime('ddmmyyyy', StrToDate(ShortDate)); Данный код преобразует дату, переданную в формате, определенном в виде короткой даты в Панели Управления (типа DD/MM/YY) в формат, заданный в строке Format (в нашем примере DDMMYYYY). Если DD/MM/YY — входное поле, а DDMMYYYY — поле базы данных, то приведенный выше код может сослужить пользователю хорошую службу, если он вдруг захочет использовать другой формат даты, с его соответствующим переопределением в Панели Управления. (Естественно, YYYYMMDD для поля базы данных при обычных обстоятельствах будет лучше чем DDMMYYYY, поскольку в настоящее время используется метод последовательной сортировки).
Приведение даты
Delphi 1procedure 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:
- 1
- 2
- 3
- 4
- 5
- . . .
- последняя (179) »
Последние комментарии
3 часов 42 минут назад
3 часов 49 минут назад
4 часов 18 минут назад
4 часов 22 минут назад
4 часов 22 минут назад
4 часов 30 минут назад