الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تاريخ ووقت Server

بدأه sakamaka في 10 ديسمبر 2009 · 4 رد · 743 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكن الحصول علي تاريخ ووقت السيرفر فى شبكة محلية

#2

السلام عليكم...

أضف تعريفات الأنواع التالية تحت عبارة type في القسم interface

type
   TIME_OF_DAY_INFO  = record
     tod_elapsedt     : DWord;
     tod_msecs        : DWord;
     tod_hours        : DWord;
     tod_mins         : DWord;
     tod_secs         : DWord;
     tod_hunds        : DWord;
     tod_timezone     : LongInt;
     tod_tinterval    : DWord;
     tod_day          : DWord;
     tod_month        : DWord;
     tod_year         : DWord;
     tod_weekday      : DWord;
   end;
   PTIME_OF_DAY_INFO = ^TIME_OF_DAY_INFO;

   LPBYTE           = ^Byte;
   NET_API_STATUS   = DWord;

اكتب التصريح التالي في القسم interface أو القسم implementaion

function NetRemoteTOD(HostName: PWideChar; Buffer: LPBYTE): NET_API_STATUS;
   stdcall; external 'netapi32.dll' name 'NetRemoteTOD';
{$EXTERNALSYM NetRemoteTOD}

اكتب الدالة التالية في القسم implementation

function GetRemoteDateTime(Host: WideString): TDateTime;
var
  TOD: PTIME_OF_DAY_INFO;
begin
    if NetRemoteTOD(pWideChar(Host), @TOD) = 0 then
        Result := EncodeDate(TOD^.tod_year, TOD^.tod_month, TOD^.tod_day) +
                  EncodeTime(TOD^.tod_hours, TOD^.tod_mins, TOD^.tod_secs, TOD^.tod_hunds * 10)
                  - TOD^.tod_timezone / 60 / 24
    else
        Result := 0;
end;

للحصول على التاريخ و الوقت نقوم باستدعاء الدالة السابقة بإحدى طريقتين:

procedure TForm1.Button1Click(Sender: TObject);
var
    SrvDate: TDateTime;
begin
    // من الحاسوب المحلي
    SrvDate := GetRemoteDateTime('');

    // من حاسوب آخر على الشبكة
    SrvDate := GetRemoteDateTime('\\computer_name');

    Edit1.Text := DateTimeToStr(SrvDate);
end;

حيث computer_name هو اسم الحاسوب الذي نريد قراءة التاريخ و الوقت منه. إذا لم يكن ذلك الحاسوب موجوداً أو لم يتم تأسيس اتصال معه فإن الدالة تعيد 0، أي تاريخ 30/12/1899.

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3

شكرا اخي الحبيب علي اهتمامك وسرعة الرد وجزالك الله خيرا

#4

حسب السيرفير الذي تعمل عليه ونوع قاعدة البيانات

بالنسبة لي عند التعامل في مثلهذه الحالات أضع تريكرز في جدول موجود على السيرفير عند التعامل مع قواعد بيانات فير بيرد

يضمن هذا التريكرز تابعين هما

current_time

current_date

أحصل على الإجابة بكل سهولة وسرعة

حكمت سراج الدين

#5

السلام عليكم...

نعم... كانت إجابتي السابقة على أساس أن المقصود بالـ Server هو أي حاسوب آخر على الشبكة بصرف النظر إن كان يحتوي على محرك قواعد بيانات أم لا.

أما للحصول على الوقت و التاريخ من خلال محرك قواعد بيانات، فكما قال الأخ hikmat حيث يعتمد على نوع قاعدة البيانات. بالنسبة إلى SQL Server يمكن استعمال Query يتكون من الجملة التالية:

SELECT GETDATE() AS CurrentDateTime

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

مواضيع مشابهة