Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Машенька19
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 13
1

Не могу понять код

27.04.2012, 15:55. Просмотров 592. Ответов 7
Метки нет (Все метки)

Здравствуйте! Никак не могу разобраться в программе. Кто понимает объясните пожалуйста что здесь написанно=))
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    dd1: TDateTimePicker;
    dt1: TDateTimePicker;
    dt2: TDateTimePicker;
    dd2: TDateTimePicker;
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
uses unix_utils;
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var r,d,h,m,s: integer;
begin
  dd1.Time:=dt1.Time;
  dd2.Time:=dt2.Time;
  r := Abs (DateTimeToUnix(dd1.DateTime) - DateTimeToUnix(dd2.DateTime));
  d:= Trunc(r/(24*3600));
  dec(r,d * 24*3600);
  h:= round(r/(3600));
  dec(r,h * 3600);
  m:= Trunc(r/(60));
  dec(r,m * 60);
  s:=r;
  Memo1.Clear;
  Memo1.Lines.Add('Дни: '+inttostr(d));
  Memo1.Lines.Add('Часы: '+inttostr(h));
  Memo1.Lines.Add('Минуты: '+inttostr(m));
  Memo1.Lines.Add('Секунды: '+inttostr(s));
end;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2012, 15:55
Ответы с готовыми решениями:

Не работает, код, не могу понять почему
Очень нужно, срочно, но не могу найти ошибку! Unit Matrix; interface ...

Написал код, но не могу понять где ошибка :[
type TForm3 = class(TForm) Edit1: TEdit; Label1: TLabel; ...

не могу понять
вот есть уравнение sin(x)+ln(x)+x=0,1, х=0,45, подставляем потом...

Не могу понять ошибку
Всем здрасте. Помогите кто-чем может procedure...

Не могу понять ошибку
В этом коде при компиляции пишет в строке Seek(ft, sc);: Implicit string cast...

7
Puporev
Модератор
54582 / 42088 / 29061
Регистрация: 18.05.2008
Сообщений: 99,260
27.04.2012, 16:11 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
uses unix_utils;//подключаем модуль где описана функция 
перевода значения даты и времени в секунды
 DateTimeToUnix
........................................................................
dd1.Time:=dt1.Time;//читаем более позднюю дату
  dd2.Time:=dt2.Time;//читаем раннюю лату
//вычисляем число секунд прошедших между введенными значениями
  r := Abs (DateTimeToUnix(dd1.DateTime) - DateTimeToUnix(dd2.DateTime));
  d:= Trunc(r/(24*3600));//прошло полных дней, целая часть от деления секунд на количество секунд в сутках
  dec(r,d * 24*3600);//уменьшаем количество секунд на их количество в полных сутках
  h:= round(r/(3600));//вычисляем полные часы как целую часть от деления оставшихся секунд на количество их в 1 часе
  dec(r,h * 3600);//вычитаем из секунв
  m:= Trunc(r/(60));//также минуты
  dec(r,m * 60);//вычитаем
  s:=r;/остались секунды меньше 60
  Memo1.Clear;//очтщаем Мемо
  Memo1.Lines.Add('Дни: '+inttostr(d));//выводим результат
  Memo1.Lines.Add('Часы: '+inttostr(h));
  Memo1.Lines.Add('Минуты: '+inttostr(m));
  Memo1.Lines.Add('Секунды: '+inttostr(s));
end;
2
Машенька19
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 13
27.04.2012, 16:18  [ТС] 3
Спасибо большое, а не подскажите литературу что бы побольше узнать о различных модулях вроде unix_utils
0
Mawrat
12827 / 5735 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
27.04.2012, 17:13 4
Цитата Сообщение от Машенька19 Посмотреть сообщение
Спасибо большое, а не подскажите литературу что бы побольше узнать о различных модулях вроде unix_utils
А этот модуль нестандартный и он здесь не нужен. Без этого модуля можно переписать так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
procedure TForm1.Button1Click(Sender: TObject);
var
  r, d, h, m, s : Int64;
begin
  //Разность между двумя отметками времени, выраженная в секундах.
  r := Trunc( Abs(dt1.Time - dt2.Time) * 24 * 60 * 60) );
  //Целое количество суток.
  d := r div (24 * 60 * 60); //24 * 60 * 60 - количество секунд в сутках.
  //Определяем оставшуюся часть суток.
  r := r mod (24 * 60 * 60);
  //Количество целых часов в оставшейся части суток.
  h := r div (60 * 60); //60 * 60 - количество секунд в часе.
  //Определяем оставшуюся часть часа.
  r := r mod (60 * 60);
  //Количество целых минут в оставшейся части часа.
  m := r div 60; //60 - количество секунд в минуте.
  //Определяем оставшуюся часть минуты - это количество секунд в оставшейся части минуты.
  s := r mod 60;
 
  Memo1.Lines.Add('--------------------------------------------------');
  Memo1.Lines.Add('Дней: ' + IntToStr(d));
  Memo1.Lines.Add('Часов: ' + IntToStr(h));
  Memo1.Lines.Add('Минут: ' + IntToStr(m));
  Memo1.Lines.Add('Секунд: ' + IntToStr(s));
end;
1
Машенька19
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 13
27.04.2012, 18:06  [ТС] 5
Mawrat, спасибо, но теперь программа всегда говорит что между датами 0 дней. Почему?
0
Машенька19
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 13
27.04.2012, 18:10  [ТС] 6
Вот например:
0
Миниатюры
Не могу понять код  
Puporev
Модератор
54582 / 42088 / 29061
Регистрация: 18.05.2008
Сообщений: 99,260
27.04.2012, 18:15 7
Машенька19, Лучшее это враг хорошего...
0
Mawrat
12827 / 5735 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
27.04.2012, 22:39 8
Цитата Сообщение от Машенька19 Посмотреть сообщение
теперь программа всегда говорит что между датами 0 дней. Почему?
Понятно. Судя по коду для представления каждой временной точки применяются два DateTimePicker-а. Тогда надо заменить строку:
Delphi
1
2
  //Разность между двумя отметками времени, выраженная в секундах.
  r := Trunc( Abs(dt1.Time - dt2.Time) * 24 * 60 * 60 );
на:
Delphi
1
2
  //Разность между двумя отметками времени, выраженная в секундах.
  r := Trunc( Abs(dd1.Time + dt1.Time - dd2.Time - dt2.Time) * 24 * 60 * 60 );
Или, можно подстраховаться и за писать так:
Delphi
1
2
  //Разность между двумя отметками времени, выраженная в секундах.
  r := Trunc( Abs(Int(dd1.Time) + Frac(dt1.Time) - Int(dd2.Time) - Frac(dt2.Time)) * 24 * 60 * 60 );
1
27.04.2012, 22:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2012, 22:39

Не могу понять ошибку
begin s:=ExtractFilePath(Application.ExeName); case...

AlphaSkins Не могу понять !
Помогите пожалуйста не могу понять че надо скачать мне и установить у меня...

Не могу понять в чем трабла!!!
Всем привет!!! Что за трабла в этом коде? procedure...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru