PDA

View Full Version : جستجوی کل فایل در تایمر



unique1984
دوشنبه 24 بهمن 1384, 08:22 صبح
:گریه:
سلام دوستان من یه مشکلی دارم
من دارم یه برنامه می نویسم که در یه تایمر می خوام کل فایل رو بگردم و اون رکوردهایی رو که تاریخ های یکسانی دارند رو ساعتشونو با ساعت سیستم مقایسه کنم و بعد اگه ساعتی که من قبلا براشون وارد کردم با ساعت سیستم یکی بود یه فایل صوتی پلی بشه. من همه این کارها رو بلدم . مشکلی که هست اینه که نمی شه توی تایمر فایل رو برای پیدا کردن رکوردهای خاص جستجو کرد یعنی اگه این کار رو بکنم در موقع اجرا مرتب رکوردهای مختلفی خود به خود انتخاب می شوند
اگه کسی می تونه منو راهنمایی کنه ممنون می شم:تشویق:

سید مسعود موحد
دوشنبه 24 بهمن 1384, 09:12 صبح
من متوجه کار شما نشدم ولی فکر میکنم که در زمانی که شما دارید دنبال رکورد میگردید باید تایمر خود را خاموش نمایید.

unique1984
دوشنبه 24 بهمن 1384, 10:42 صبح
مرسی آقای موحد
من نباید تایمر رو خاموش کنم چون تایمر مرتب داره ساعت سیستم رو می گیره

joker
چهارشنبه 26 بهمن 1384, 20:17 عصر
منم دقیقا متوجه منظورتون نشدم
ساعت سیستم را بر چه اساسی میخواهید
منظورم اینه که اگه به ثانیه بخواهد ه مشکلاتی که در زیر نوشتم 100% براتون موقع خوندن و تطبیق زمان براتون به وجود میاد اگه به دقیقه باشه در مورد فایلهای حجیم ممکنه پیش بیاد و اگه به ساعت باشه فقط باید پردازش کنید که ساعتهای آخر روز مثلا 12 شب نباشه و.....


اما : میتونید همزمان از 2 تایمر و متغیر عمومی استفاده کنید

که البته بازم غیر منطقی به نظر میاد چون زمانی که فایل باز میشه تا برسه به انتها مطمئنا طول میکشه چطوری میخواهید این دو مورد را با هم سنکرون کنید ؟ ( اگه زمان را دقیق بخواهید )

پیوست »
میتونید یک برنامه ترود بنویسید که به جای تایمر دلفی براتون کار کنه . داخل اون حلقه روتین خواندن فایل اجرا بشه و.....
اینطوری با حداکثر سرعت ممکنه میتونید با فایل کار کنید( کمتر از 1 میلی ثانیه خود تایمر دلفی )
احتمالا جواب دقیقتری بدست بیارید...

پیوست 2: اگه میشه دقیقتر توضیح بدین ... سورس بزارین بهتره ممکنه استراکچری که برای ساخت فایل استفاده کردین مشکل داشته باشه ( آخه خود به خود و رندوم که نمیشه :) )

پیوست 3 » بهتره به حای فایل از دیتا بیسی مثل اکسس برای جستجو استفاده کنید کارتون خیلی خیلی راحت میشه .

Hamid_PaK
چهارشنبه 26 بهمن 1384, 21:24 عصر
این طور که از سوال شما پیداست شما می خواهید یکسری زمان که ذخیره شده اند رو با ساعت سیستم چک کرده و اگر برابر بودند عملی خاص رو انجام بدهد ...
چگونگی ذخیره این داده ها و چک کردنشون توی این مسئله خیلی مهم است ...
بهر حال به نظر من شما برای جستجو به یک روال نیاز دارید که از ابتدا تا انتهای فایل رو در یک متغییر آرایه ای فراخوانی کنه و با اون متغییر شروع به چک کردن کند ...
از یک ترد ( Thread ) استفاده کنید و با روش فوق یکبار مسئله رو از ابتدا چک کنید ...

یا حق !!!

unique1984
پنج شنبه 27 بهمن 1384, 09:55 صبح
مرسی از همه دوستان
اینم سورس اون قسمت


procedure TFrmKar.Timer2Timer(Sender: TObject);
begin
Timer2.Enabled:=false;
FrmBank.DaSWork.DisableControls;
FrmBank.DaSWork.First;
firsttime:=TimeToStr(time);
AmPm:=copy(firsttime,10,3);
hour:=copy(firsttime,1,2);
if AmPm='È.Ù' then
case (StrToInt(hour)) of
01:hour:='13';
02:hour:='14';
03:hour:='15';
04:hour:='16';
05:hour:='17';
06:hour:='18';
07:hour:='19';
08:hour:='20';
09:hour:='21';
10:hour:='22';
11:hour:='23';
12:hour:='24';
end;
if AmPm='È.Ù' then fulltime:=hour+':'+copy(firsttime,4,5) else fulltime:=copy(firsttime,1,8);
while not(FrmBank.DaSWork.Eof) do
begin
if FrmBank.DaSWork.FieldValues['date']=PrintNormal then
if FrmBank.DaSWork.FieldValues['tend']<>'' then
if (FrmBank.DaSWork.FieldValues['tend']+':00')=fulltime then
begin
MediaPlayer1.Close;
Dir := ExtractFilePath(Application.ExeName);
MediaPlayer1.FileName := Dir+'warning.wav';
MediaPlayer1.Open;
MediaPlayer1.Play;
TvNum:=strtoint(suiDBENum.Text);
case TvNum of
1: FrmMain.TV1.Color:=$00E980FF;
2: FrmMain.tv2.Color:=$00E980FF;
3: FrmMain.tv3.Color:=$00E980FF;
4: FrmMain.tv4.Color:=$00E980FF;
5: FrmMain.tv5.Color:=$00E980FF;
6: FrmMain.tv6.Color:=$00E980FF;
7: FrmMain.tv7.Color:=$00E980FF;
8: FrmMain.tv8.Color:=$00E980FF;
9: FrmMain.tv9.Color:=$00E980FF;
10: FrmMain.tv10.Color:=$00E980FF;
end;
end;
FrmBank.DaSWork.Next;
end;
FrmBank.DaSWork.EnableControls;
timer2.Enabled:=true;
end;

unique1984
پنج شنبه 27 بهمن 1384, 09:56 صبح
می دونم تو کد نویسیش مشکل داره اما نمی دونم چه کار کنم

unique1984
پنج شنبه 27 بهمن 1384, 11:17 صبح
اصلاحیه!!!!!!!!!!!!!!!!!!!!!!!!!!
دوستان شرمندم توی عنوان تاپیک یه اشتباه کردم
منظور من جستجوی یک جدول دیتا بیس اس کیو ال هست نه یه فایل حواسم نبود ببخشید

Hamid_PaK
پنج شنبه 27 بهمن 1384, 12:56 عصر
الان دیگه یه چیزهایی واضح شدن ..

تایمر رو برای اجرا روال در زمان معیین استفاده کرده اید ...
توی رویداد تایمر ، روال کل رکردهای دی بی رو چک می کنه ...

من که نتونستم کدتون رو درست متوجه بشم این طوری نمیشه اشکال رو پیدا کرد ولی یک مثال براتون آماده کردم امید وارم که همون باشه که مد نظرتون هست و بدردتون بخوره ...

یا حق !!!

unique1984
شنبه 29 بهمن 1384, 08:53 صبح
مرسی آقا حمید اما فایلتون باز نمی شه شرمنده منظورم اینه که از حالت فشره سازی در نمی یاد ارور می ده

Hamid_PaK
شنبه 29 بهمن 1384, 10:12 صبح
برسم خونه براتون دوباره ضمیمه می کنم ...

یا حق !!!

Hamid_PaK
شنبه 29 بهمن 1384, 20:44 عصر
Zip کردم قبلی RAR بود ...

یا حق !!!