![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Уважаемые возникла такая проблема.
Условие: Имеется некий автобусный маршрут №1. Мы имеем данные по данному маршруту, а именно: а:=время выхода автобуса на маршрут; b:=время схода автобуса с маршрута; с:=время затрачиваемое автобусом на один рейс. К примеру, a:=06.00 b:=22.00 с:=00.30 Задача: Составить дневной график движения маршрута. Т.е. он должен выглядеть так: 06.00 - 06.30 06.30 - 07.00 07.00 - 07.30 07.30 - 08.00 08.00 - 08.30 08.30 - 09.00 и т.д. до 22.00 Начал писать код, совсем запутался. Подскажите, как лучше решить проблему. Код:
function time(a, c: double): double; var h1: double; begin h1 := (INT(A) + INT(c)) * 60 + (frac(a) + frac(c)) * 100; result := int(h1 / 60) + (h1 - int(h1 / 60) * 60) / 100; end; function time2(w, c: double): double; var h1: double; begin h1 := (INT(w) + INT(c)) * 60 + (frac(w) + frac(c)) * 100; result := int(h1 / 60) + (h1 - int(h1 / 60) * 60) / 100; end; procedure TForm1.Button1Click(Sender: TObject); var a,b,c,w,z,x:double; begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); c:=StrToFloat(Edit3.Text); w:=time(a,c); z:=time2(0,c); while w <= b do w:=w+z; ListBox1.Items.Add(FloatToStr(w)+' '+FloatToStr(z)); end; end. |
|
#2
|
||||
|
||||
|
Попробуй название функции time, заменить на time1, потому что time это зарезервированное слово.
![]() Последний раз редактировалось Zylex, 12.04.2008 в 15:12. |
|
#3
|
||||
|
||||
|
Код:
procedure TForm1.Button1Click(Sender: TObject);
var w,b,x,y: String;
begin
x := formatdatetime('hh:mm', strtotime(edit3.text));
b := formatdatetime('hh:mm', strtotime(edit2.text));
w := formatdatetime('hh:00', strtotime(Edit1.Text));
y := Formatdatetime('hh:mm', strtotime(w) + strtotime(x));
listbox1.Items.Add(w + ' - ' + y);
while w < b do
begin
w := formatdatetime('hh:mm',strtotime(w) + strtotime(x));
y := Formatdatetime('hh:mm', strtotime(w) + strtotime(x));
ListBox1.Items.Add(w + ' - ' + y);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit3.Text := '00:30';
edit3.Visible := false;
end;Если я тебя правильно понял, то вот код, здесь я написал все что ты хотел, а если что еще надо сам думаю допишешь. ![]() Последний раз редактировалось Zylex, 12.04.2008 в 08:26. |
|
#4
|
|||
|
|||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DateUtils;
type
TForm1 = class(TForm)
Button1: TButton;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
MaskEdit3: TMaskEdit;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:string;
at,bt,ct:TDateTime;
i,j,k, k1:integer;
begin
Memo1.Lines.Clear;
a:=FormatDateTime('hh:mm',StrToTime(MaskEdit1.Text));
b:=FormatDateTime('hh:mm',StrToTime(MaskEdit2.Text));
c:=FormatDateTime('hh:mm',StrToTime(MaskEdit3.Text));
i:=MinutesBetween(StrToTime(a),StrToTime(b));
j:=MinutesBetween(0,StrToTime(c));
k:=i div j;
at:=StrToTime(a);
bt:=StrToTime(b);
ct:=StrToTime(c);
For i:=0 to k do
begin
a:=FormatDateTime('hh:mm',at);
c:=FormatDateTime('hh:mm',at+ct);
Memo1.Lines.Add(a +' '+c);
at:=at+ct;
end;
end;
end.Может я конечно чего и наворотил, извиняюсь. Но работает вроде как надо. |
|
#5
|
|||
|
|||
|
Друзья, всем спасибо огромное!
|