Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Даты в Delphi


Рекомендуемые сообщения

Kuzmich

Пожалуйста приведи примерчик (простенький) использования этой функции,

а то я не пойму как. Также не пойму почему на выходе integer когда может

быть и дробная часть года.

Ссылка на комментарий
Поделиться на другие сайты

dido

не пойму почему на выходе integer когда может быть и дробная часть года

Т.е. тебе надо результат типа 3.24 года? Тогда посчитай разницу в днях, и раздели на 365 (ИМХО погрешность из-за високосного года будет невелика).

Ссылка на комментарий
Поделиться на другие сайты

Тогда посчитай разницу в днях, и раздели на 365

Тогда такая функция:

DaysBetween(const ANow, AThen: TDateTime): integer;

дробная часть года

Колличество целых лет...

Пожалуйста приведи примерчик

n: integer;

n:=YearsBetween(1.1.2000, 1.1.2005);

Ссылка на комментарий
Поделиться на другие сайты

Kuzmich

Вот часть кода:

var

n: integer;

procedure TForm1.Button1Click(Sender: TObject);

begin

n:=YearsBetween(1.1.2000, 1.1.2005);

Edit1.Text:=IntToStr(n);

end;

Программа прерывается после YearsBetween, указывая ошибки:

Undeclared identifier:'YearsBetween'

Record, object or class type required

Missing operatot or semicolon.

В чем дело?

Ссылка на комментарий
Поделиться на другие сайты

Функция DaysBetween() в качестве параметров принимает тип TDateTime. Выражается он числом с плавающей точкой, т.к. определен через Double. Для подстановки даты в текстовом виде необходимо преобразование с помощью функции StrToDateTime(). Так как время тебя не интересует, можно использовать тип TDate (он определен через TDateTime), и, соответственно функцию StrToDate.

Пример:

n:=DaysBetween(StrToDate('01.01.2002'), StrToDate('01.05.2004'));

P.S. Год можно писать и двумя знаками, насчет Y2K - читай хелп по StrToDate.

Ссылка на комментарий
Поделиться на другие сайты

Shurr

Все работает, но осталось еще два вопроса:

1. Как перейти с одного Edit в другое клавишей Enter, мышкой и Tab неудобно.

2. Как отрезать лишние знаки после запятой, оставив, например, только два?

Изменено пользователем dido
Ссылка на комментарий
Поделиться на другие сайты

2. Как отрезать лишние знаки после запятой, оставив, например, только два?

Форматный вывод попробуй...

n:10:2 вместо просто n, где 10-всего знаков под число (в том числе и запятая), 2-под дробную часть...

Ссылка на комментарий
Поделиться на другие сайты

dido

1. Как перейти с одного Edit в другое клавишей Enter, мышкой и Tab неудобно.

Вообще советую книжки почитать. А так, если сумеешь отловить нажатие кнопки Enter, то в этой процедуре вставь

Edit2.SetFocus
вместо Edit2 вставь название твоего поля ввода, на который нужно установить фокус.
Ссылка на комментарий
Поделиться на другие сайты

Kuzmich

Спасибо за помощь, но,как я и предполагал "n:6:2" в Delphi не дейтвует.

Я нашел нужную функцию - FloatToStrF(p,ffcurrency,6,2).

Тут p - переменная, ffcurrency - формат числа (в данном случае - деньги),

остальное как и в Pascal, т.е. общее число знаков и знаки после запятой.

Может кому понадобится.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...