PDA

View Full Version : محاسبه ی زمان



sasan23
یک شنبه 28 اسفند 1390, 17:48 عصر
با سلام
"درخواست دو کمک در دلفی"
1-ما یه تایمر و یه لیبل داریم حالا چطور میشه کاری کرد که لیبل ما هر 1 ثانیه فقط و فقط ثانیه رو نشون بده یا فقط و فقط دقیقه یا ساعت رو نشون بده(میدونم که چه طوری میشه کاری کرد که ساعت و دقیقه و ثانیه رو لیبل یه جا نشون بده ولی نمیتونم از هم جداشون کنم):متفکر:
__________________________________________________ _____________________________________
2- ما یه تایمر داریم که میخایم هر مثلا 20 ثانیه بهمون بگه که چند ثانیه از زمان فعالیتش میگذره ولی هر کار کردم روشی به ذهنم نرسید لطفا دوستان کمک کنند :گریه:

mohsen24000
یک شنبه 28 اسفند 1390, 18:30 عصر
var Hour, Min, Sec, MSec : Word; DecodeTime(Date, Hour, Min, Sec, MSec); showmessage( 'The time is Second ' + IntToStr(Sec) + ' of Minute ' + IntToStr(Min) + ' of Hour ' + IntToStr(Hour));

Felony
یک شنبه 28 اسفند 1390, 18:40 عصر
ما یه تایمر داریم که میخایم هر مثلا 20 ثانیه بهمون بگه که چند ثانیه از زمان فعالیتش میگذره ولی هر کار کردم روشی به ذهنم
یک متغییر در بخش Private کلاس فرم مورد نظر با نام ElapsedTime از نوع Integer تعریف کنید و از کد زیر داخل تایمرتون استفاده کنید :

Inc(ElapsedTime, Timer1.Interval);
Label1.Caption:= IntToStr(ElapsedTime div 1000);

MohsenB
یک شنبه 28 اسفند 1390, 19:28 عصر
سلام

1 و 2 :

این کد را به uses اضافه کنید :

uses DateUtils;

اینم برای سوال 1:


procedure TForm1.tmr1Timer(Sender: TObject);
begin
lbl1.Caption:= IntToStr(HourOf(Now));
lbl2.Caption:= IntToStr(MinuteOf(Now));
lbl3.Caption:= IntToStr(SecondOf(Now));
end;


این رو برای سوال 2 :

procedure TForm1.tmr2Timer(Sender: TObject);
begin
tmr2.Tag:= tmr2.Tag + 20;
lbl4.Caption:= IntToStr(tmr2.Tag);
end;

این کد رو درون رویداد ساخت فرم بنویسید :


procedure TForm1.FormCreate(Sender: TObject);
begin
tmr1.Interval:= 1000;
tmr2.Interval:= 20000;
end;


موفق باشید

Ananas
دوشنبه 29 اسفند 1390, 01:27 صبح
جواب سوال دوم:
یک متغیر StartTime : Double تعریف کن و موقع فعال کردن تابمر با موقغ ساخت فورم بنویس:

procedure TForm1.FormCreate(Sender: TObject);
begin
StartTime := Now;
end;

بعد تو رویداد تایمر بنویس :

Label1.Caption := FloatToStr((Now - StartTime) * 24 * 60 * 60);

اگه نخواستی اعشاری باشه میتونی با تابع Trunc خروجی رو تبدیل به عدد صحیح کنی:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption := IntToStr(Trunc((Now - StartTime) * 24 * 60 * 60));
end;

sasan23
شنبه 05 فروردین 1391, 19:04 عصر
سلام
با تشکر از همه ی دوستان من برم مشغول شم اگه مشکلی بود حتما مزاحم میشم