View Full Version : فاصله بین دو تاریخ واسه قفل گذاشتن
Developer Programmer
دوشنبه 23 آذر 1383, 11:03 صبح
شرمنده همه دوستان...
راستش در یه برنامه دیتابیسی به منظور برخی ویزگیهای امنیتی(!) کاربران فقط در روز جاری مجاز به ویرایش هستند
یک فیلد در دیتابیس دارم که در آن تاریخ ثبت رکورد را درج میکنم
در یک فایل قفل هم تاریخ اجرای برنامه exe رو رمزگذاری کرده و مینویسم تا اگه کاربر تاریخ ویندوز رو عقب و جلو کرد نتونه من رو دور بزنه (!)
اما مشکل اینجاست که نمیتونم دو تا تاریخ رو از هم کم کنم!
Inprise
شنبه 28 آذر 1383, 17:00 عصر
{Returns a time delta in minutes}
//
Function TimeDeltaInMinutes(
StartDate : TDateTime;
EndDate : TDateTime): Double;
Var
Hour : Word;
Min : Word;
Sec : Word;
MSec : Word;
Delta : TDateTime;
Begin
Try
Delta := EndDate - StartDate;
DecodeTime(Delta, Hour, Min, Sec, MSec);
Result := (Hour*60)+Min;
Except
Result := 0;
End;
End;
{Returns a time delta in seconds}
//
Function TimeDeltaInSeconds(
StartDate : TDateTime;
EndDate : TDateTime): Double;
Var
Hour : Word;
Min : Word;
Sec : Word;
MSec : Word;
Delta : TDateTime;
Begin
Try
Delta := EndDate - StartDate;
DecodeTime(Delta, Hour, Min, Sec, MSec);
Result := (((Hour*60)+Min)*60)+Sec;
Except
Result := 0;
End;
End;
<span dir=ltr>here your code , but the trick is just a joke</span>
Developer Programmer
شنبه 28 آذر 1383, 22:02 عصر
اینپرایز جون خیلی وقته که نبودین و کم کم داشتم نگرون میشدم
کد رو امتحان میکنم و سوال ها رو میپرسم
فدای محبتهات بشم من
چهارشنبه 02 دی 1383, 14:17 عصر
سلام.
توابع YearsBetween, MonthsBetween, DaysBetween, HoursBetween, MinutesBetween, SecondsBetween این کار رو انجام میدن!!!
ealvandi
یک شنبه 16 اردیبهشت 1386, 23:00 عصر
حالا اگه کاربر یک کم سرش بشه و بخواد برنامه رو تست کنه - بیاد تاریخ سیستم رو جلو ببره مثالا 1 سال . اونوقت برنامه سوتی میده. و من هم نمیخوام کاربر بفهمه که برنامه من قفل داره. حالا چه کار کنم ؟؟
MNosouhi
یک شنبه 16 اردیبهشت 1386, 23:20 عصر
حالا اگه کاربر یک کم سرش بشه و بخواد برنامه رو تست کنه - بیاد تاریخ سیستم رو جلو ببره مثالا 1 سال . اونوقت برنامه سوتی میده. و من هم نمیخوام کاربر بفهمه که برنامه من قفل داره. حالا چه کار کنم ؟؟
شاید منظورتون رو درست متجه نشده باشم ، اما خب به عنوان مثال همه برنامه های من یک هفته استفاده رایگان داره ، این یک هفته از اولین دفعه ای که اجرا میشه محاسبه میشه ، خب حالا اگه یک نفر تاریخ رو جلو ببره ، دیگه نمیتونه از برنامه استفاده کنه. البته از همون اول به مشتری میگم که یک هفته اول trial هستش ، مگه اینکه کد ثبت برنامه رو بهش بدم.
ealvandi
دوشنبه 17 اردیبهشت 1386, 00:02 صبح
مشکل من اینه که نمیخوام کاربر بدونه برنامه من trial هست !! :عصبانی++:
ghabil
دوشنبه 17 اردیبهشت 1386, 01:11 صبح
خب توکه قفل هم داری چک کن ببین چند بار برنامت اجرا میشه ، مثلا 50 بار که اجرا شد پیام بده اکسپایر شده، اگر هم برنامت دیتابیس داره راه از اون بهتر اینه که تعداد رکوردهای یک جدول رو چک کنی و مثلا وقتی بیشتر از 100 تا شدی بگی اکسپایر شده مگر اینکه کمثلا توی قفلت یک بیت ست شده باشه.
در مورد روز جاری هم میتونی یک سرور داشته باشی توی شبکه که سیستم تاریخ رو مثلا بایک ریکوست از اون سرور بخونه و طبیعتا کسی دسترسی بجز مدیریت سیستم به سرورت دسترسی نداره که بخواد تاریخش رو تغییر بده.
dkhatibi
دوشنبه 17 اردیبهشت 1386, 11:07 صبح
یک روش دیگر اگر می خواهی برنامت با تاریخ کار کنه!
من این کار رو قبلا انجام دادم هیچ مشکلی نداشت.
اولین باری که برنامت اجرا شد تاریخ سیستم را ثبت کن.
با هر بار اجرای برنامه آخرین تاریخ رو نیز ثبت کن.
اگر تاریخ فعلی از تاریخ آخرین باری که برنامه اجرا شده کوچکتر باشد تاریخ سیستم دستکاری شده و بنامه باید اکسپایر شه.
اگر تاریخ فعلی ابزرگتر یا مساوی آخرین تاریخ است باید تفاوت اولین ترایخ و تاریخ فعلی محاسبه شده و در صورتیکه از مدت مجاز بیشتر بود برنامه اکسپایر می شه.
فقط یک مشکل پیش می آد که کاربر می تونه تاریخ رو هر روز برابر با اولین روز یا آخرین روزی که برنامه در مدت مجاز اعلام شده تنظیم کند که این هم عملا کاری از پیش برایش نمی برد .
ealvandi
دوشنبه 17 اردیبهشت 1386, 20:37 عصر
در مورد روز جاری هم میتونی یک سرور داشته باشی توی شبکه که سیستم تاریخ رو مثلا بایک ریکوست از اون سرور بخونه و طبیعتا کسی دسترسی بجز مدیریت سیستم به سرورت دسترسی نداره که بخواد تاریخش رو تغییر بده.
برنامه من تحت شبکه نیست.
اگر تاریخ فعلی ابزرگتر یا مساوی آخرین تاریخ است باید تفاوت اولین ترایخ و تاریخ فعلی محاسبه شده و در صورتیکه از مدت مجاز بیشتر بود برنامه اکسپایر می شه.
من نمیخوام که کاربر بدونه که برنامه من trial هست. ودر صورت تست کردن برنامه مثلا بردن تاریخ سیستم به 10 سال بعد برنامه expir نشه.
Developer Programmer
سه شنبه 18 اردیبهشت 1386, 09:08 صبح
احسان بالام جان، یه راه بهتر هم هست...
ببین میتونی برنامه ات رو واسه مثلا دویست رکورد تنظیم کنی.
یعنی برنامه، واسه بیشتر از دویست رکورد کار نکنه... اینطوری جناب سرهنگ هرچی تاریخ رو عقب و جلو کنه چیزی نمیفهمه و اگه خدا بخواد تا اون موقع پایان خدمت رو گرفتی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.