مشاهدة النسخة كاملة : مشروع برنامج محادثة, شارك كي تفيد وتستفيد
AL-MOB4RM3G
12-01-2010, 10:31 AM
بسم الله الرحمان الرحيم,
السلام عليكم ورحمة الله وركاته
اخواني الكرام, هنا مشروع برنامج محادثة بئذن الله تعالى,
اعلم انه قد تم فتح الموضوع من قبل لكن, لأسباب فقد توقف المشروع,
كان بعنوان: مشروع جماعي : برنامج محادثة
على كل حال, الفكرة هي نفسها تقريبا,
1. سيكون هناك خادم يعمل على جهاز
2. كل مستخدم يملك واحد من الكلبينت Client
3. يتم تسجيل معرّف عن طريق تعبئة بعض المعلومات مثل اسم المستخدم, كلمة المرور, البلد, ذكر ام انثى وو الى آخره,
4. يكون هناك قآئمة اصدقآء لكل مستخم, لا يتم اضآفة صديق الّى بعد موآفقته,
5. يمكن لأي مستخدم عن طريق ارسال امر من ال Client الى ال Server ان يفتح غرفة شات كتآبي, (ملآحظة, الغرفة تكون على السرفر وليس عند المستخدم الذي يفتح الغرفة)
6. يمكن لأي مستخدم ان يدخل ويشآرك في اي شات كتآبي موجود,
7. امكآنيّة ارسآل رسآئل خآصة بين 2 من المستخدمين مباشرة, اي ليس عن طريق غرفة شات,
8. خآصيّة ارسال ابتسامات ستكون متوفّرة ان شاء الله,
9. صورة شخصيّة يمكن اضآفتها لكل مستخدم(ان لم يضف المستخدم صورة تكون هناك صورة افترآضيّة) وتظهر بجانب اسم المستخدم في ال Contact List ,
10. يمكن تغيّير ال Display Name للمستخدم لكنه لا يمكن تغيّير اسم المعرّف,
11. سيكون هناك ايضى امكآنية وضع حآلة, يعني Busy, online, away
12. دعم كامل للعربية ان شاء الله, (سنحاول ان لا يكون هناك احرف انجليزيّة في البرنآمج) وهذا امّا عن طريق الدلفي 2010 او عن طريق الدلفي 7 لكن مع مكونات تدعم اليونيكود
......
....
..
1000. البرنآمج بوآجهة عربيّة ان شاء الله, يعني كل شئ من اليمين الى اليسآر,
هذا مبدئيّا,
نحاول الإلتزام بلغة الدلفي قدر المستطاع, او بالأحرى كلّيّا,
قاعدة بيانات, لا ادري ما هو المنآسب؟ انتظر اقترآح,
المشروع يبدأ بالإقترآحات, + التعليقات على ما هو مكتوب بالأعلى, اضافات, أسئلة, توضيحات, وو الى آخره,
ملحآظة هآمة: كتآبة شكرا او ان تشكر احدا دون ان تكتب مشآركة فيها افآدة او استفآدة ممنوع في هذا الموضوع منعاً قآطعاً, ويتم حذف المشآركة بدون سابق انذار,
المشآركة مفتوحة حآليّا لمن اراد ذلك, لكن ربما تغلق في المستقبل ان شاء الله,
تذكّر اخي الكريم ان المشروع هذا كي تفيد وتستفيد, لا ان تقرأ وتذهب فقط,
انتظر التفآعل بئذن الله تعالى,:laugh:
هل نسيت شئ ؟
o15s19
12-01-2010, 10:38 PM
شئ رائع
و إن شاء الله معكم للنهاية
توضيحات
1)ما هو نظام التواصل عن طريق الشبكة TCp أو UDP
2)ما هو نظام الشبكة المعتمد عليها Blocking or nonBlocking
3)بحسب نظام الشبكة ما هي المكونات المعتمدة(Indy = Blocking or ICS = Nonblocking )أو هناك شئ أخر مثل الاعتماد على المكونات الاساسية المدعومة في الدلفي
4)هل هناك شات صوتي ؟؟
5)بيئة العمل الاساسية Delphi 2010 Or Delphi 7
هذا مبدئيا .............
AL-MOB4RM3G
13-01-2010, 07:44 AM
و إن شاء الله معكم للنهاية
اهلا وسهلا بك اخي الحبيب, :)
4)هل هناك شات صوتي ؟؟
لا, ليس في هذا المشورع حآليّا, كل شئ بدون صوت ان شاء الله (ان اردنا ان نضيف صوت يكون هذا في مشروع مشتق من هذا المشورع ممكن فتحه في موضوع آخر بعد النهآية من هذا المشورع ان شاء الله)
1)ما هو نظام التواصل عن طريق الشبكة tcp أو udp
نعم, ما نقآط القوّة في ال tcp او udp ؟ وما هي نقآط الضعف في استخدآم كل وآحد منها ؟
)ما هو نظام الشبكة المعتمد عليها Blocking or nonBlocking
3)بحسب نظام الشبكة ما هي المكونات المعتمدة(Indy = Blocking or ICS = Nonblocking )أو هناك شئ أخر مثل الاعتماد على المكونات الاساسية المدعومة في الدلفي
نفس السؤآل هنا تقريبا, ما نقآط القوّة وما نقآط الضعف في كل وآحد منهما Blocking or nonBlocking ؟ انا استخدمت الإندي من قبل فقط, لم يسبق لي ان تعاملت مع ال ICS من قبل, لكن ليس لدي مانع ان كان ال ICS افضل لهذا المشروع,
5)بيئة العمل الاساسية Delphi 2010 Or Delphi 7
هذا قآبل للنقآش, انا ارجّح الدلفي 2010 ,, ما رئيكم ؟
بارك الله لكم, وننتظر الإخوة البآقين ايضى,
o15s19
13-01-2010, 01:31 PM
نعم, ما نقآط القوّة في ال tcp او udp ؟ وما هي نقآط الضعف في استخدآم كل وآحد منها ؟
في ال UDP ميزة ال Broadcasting و التي تتيح تعميم رسالة أو شئ أخر عبر الشبكة بدون حاجة الكلاينتس أن يكونو متصلين مع السرفر
أما ال TCP فهو يرتبط الجهازين إرتباط مباشر و هو يضمن وصول البيانات للطرف الأخر لذلك أحبذ هذا النوع و لكن يمكن استخدام UDP لعمليات أخر مثل على سبيل المثال كشف الكلااينت للسرفر بشكل تلقائي مثلا.
نفس السؤآل هنا تقريبا, ما نقآط القوّة وما نقآط الضعف في كل وآحد منهما Blocking or nonBlocking ؟ انا استخدمت الإندي من قبل فقط, لم يسبق لي ان تعاملت مع ال ICS من قبل, لكن ليس لدي مانع ان كان ال ICS افضل لهذا المشروع,
أنا ايضا تعاملت مع الاندي بشكل أكبر و أحبذه و لكن يمكن لأحد غيرنا أن يحبذ النوع الاخر لعمله به
بالنسبة لنقاط القوة و الضعف لا اتوقع أن يكون هناك حمل على السرفر باستخدام التراسل النصي أما عندما يكون هناك بيانات ضخمة صوت أو صورة فعلى ما اعتقد هنا يؤثر Blocking أو Nonblocking لأن لك منهما حلول مختلفة عن الأخر .
هذا قآبل للنقآش, انا ارجّح الدلفي 2010 ,, ما رئيكم ؟
و أنا ايضا :)
AL-MOB4RM3G
14-01-2010, 08:52 AM
أما ال tcp فهو يرتبط الجهازين إرتباط مباشر و هو يضمن وصول البيانات للطرف الأخر
اذا فهذا شئ مهم, نعتمد ال tcp ان شاء الله ان لم يكون هناك مآنع من احد الإخوة,
و لكن يمكن استخدام UDP لعمليات أخر مثل على سبيل المثال كشف الكلااينت للسرفر بشكل تلقائي مثلا
لم افهم المقصود اخي الحبيب, هل من توضيح ؟
تقصد كي تظهر ايّبيّات الكلينتس المتصلين بالسرفر ؟
بالنسبة لنقاط القوة و الضعف لا اتوقع أن يكون هناك حمل على السرفر باستخدام التراسل النصي أما عندما يكون هناك بيانات ضخمة صوت أو صورة فعلى ما اعتقد هنا يؤثر Blocking أو Nonblocking لأن لك منهما حلول مختلفة عن الأخر .
طيب جميل, هنآ, فكرة, ارسآل الصور و الملفّآت خآصيّة يجب اضآفتها للبرنآمج ان شاء الله تعالى,
لكن الصوت, لا ليس الآن,
بارك الله لكم, وننتطر مشآركة بآقي الإخوة ايضى,:bye1:
B.M.AbdelAziZ
14-01-2010, 09:07 AM
السلام عليكم
UDP...لم افهم المقصود
عند تنفيذ Client لاول مرة يبحث عن IP الServer بشكل الي Automatic
راجع موضوع: الاتصال بالشبكة بواسطة Udp وتبادل بيانات الاتصال
http://www.delphi4arab.com/forum/showthread.php?t=128
UDP استخدامه خاصة بنقل/بث الصوت حيث ضياع جزئ منه ليس مهم كثيرا
o15s19
14-01-2010, 11:29 AM
توضيحات
1)ما هو الرقم أو الرمز المعتمد من قبل السرفر (أي بي أو اسم مستخدم أو هاش md5 مثلا) بحيث يعتمد من أجل عدم التشابه بحيث تم دخول البرنامج من نفس الجهاز أم أنه يمنع تشغيل البرنامج أكثر من مرة.
2)ما هي قاعدة البيانات المستخدمة في البرنامج
AL-MOB4RM3G
14-01-2010, 12:52 PM
طيب خيرا ان شاء الله,
فيما يخص قآعدة البيانات, ليس لدي اي فكرة عن القآعدة المستخدمة,
ما قولكم؟
كان الأخ عبد العزيز اقترح قآعدة MySQL في المشروع السآبق,
هل هو المنآسب في هذا المشروع ام انه يفضّل استخدآم شئ آخر ؟
o15s19
15-01-2010, 10:51 AM
أخي الكريم استخدم ما تراه مناسبا(لا خبرة لي بالتعامل مع قواعد البيانات)
و بالمناسبة متى سيبدأ العمل ؟؟
AL-MOB4RM3G
15-01-2010, 11:07 AM
أخي الكريم استخدم ما تراه مناسبا(لا خبرة لي بالتعامل مع قواعد البيانات)
ليست لدي تجربة الّا مع الأكسس, لكن لا اظنه خيار منآسب,
هل من اقترآح اخوآني الكرام؟
برنآمج مثل MSN, skype, paltalk ماذا يستخدم, هل من احد عنده فكرة ؟ (يعني برنامج بكثير من المستخدمين)
بارك الله لكم وجزآكم خيرا
و بالمناسبة متى سيبدأ العمل ؟؟
بعد تحديد القآعدة ان شاء الله, (ان لم يكن هناك اي شئ من طرف احد الإخوة يود منآقشته من قبل البدئ بالمشروع)
بالتوفيق,
shagrouni
16-01-2010, 11:54 PM
السلام عليكم
بالنسبة للشبكة: أرى استكشاف DirectPlay في DirectX فهي توفر الكثير من الجهد و الوقت.
بالنسبة لقاعدة البيانات: ما رأيكم بـ SQLite ، فهي خفيفة و محكمة، فإذا استدعى الأمر الترقية إلى قاعدة بياناتServer فأنا أفضل PostgreSQL ، فهي مصدر مفتوح حقيقي (لا تتبع لجهة ربحية معينة) ، و نعم، Skype و ***** من مستخدميها.
أيضا: أرى أن تتم برمجة ما يخص الاتصال و قواعد البيانات على شكل طبقات Layers بحيث أن منطقيات البرنامج تكون منفصلة عن استدعاءات قواعد البيانات أو الاتصال. وبذلك يمكن استبدال تقنية الاتصال أو نوع قواعد البيانات بسهولة.
أمر آخر: أرى أن تكون في البرنامج خاصية حقيقية ينفرد بها تميزه عن باقي البرامج الشبيهة.
بالتوفيق.
AL-MOB4RM3G
17-01-2010, 06:22 AM
وعليكم السلام ورحمة الله,
اهلا وسهلا بك اخي shagrouni, سعدت كثيرا بمشاركتك اخي الكريم
بالنسبة للشبكة: أرى استكشاف DirectPlay في DirectX فهي توفر الكثير من الجهد و الوقت.
جميل, قرأت عن هذا قليلا الآن, تبدوا هذه المكتبة بالغعل جميلة, لكنّها تعتمد على ال UDP
هل لهذا تأثير على البرنامج ؟ ربما الرسآئل لا تصل الى الشخص الذي ارس له رسآلة,؟
بعض الميّيزات, (من الموسوعة الحرّة)
* IDirectPlay8Server, which allows access to server functionality
* IDirectPlay8Client, which allows access to client functionality
* IDirectPlay8Peer, which allows access to peer-to-peer functionality
# Various network address translation (NAT) interfaces that make it easier for players behind routers to host games. Most players on broadband internet connections face this problem.
# Various voice communication interfaces known as DirectPlay Voice that make it easier to support audio communication and voice input in games.
سؤآل, هل تغني هذه المكتبة عن استخدام مكونات ال Indy مثلا ؟
بالنسبة لقاعدة البيانات: ما رأيكم بـ SQLite ، فهي خفيفة و محكمة، فإذا استدعى الأمر الترقية إلى قاعدة بياناتServer فأنا أفضل PostgreSQL ، فهي مصدر مفتوح حقيقي (لا تتبع لجهة ربحية معينة) ، و نعم، Skype و ***** من مستخدميها.
بالنسبة لقآعدة SQLite فليس لدي اية مانع (ليس لدي خبرة عنها ايضى), نعتمدها ان شاء الله ان لم يكن هناك اعترآض من احد الإخوة خلال ثلاث ايّام ان شاء الله,
أيضا: أرى أن تتم برمجة ما يخص الاتصال و قواعد البيانات على شكل طبقات Layers بحيث أن منطقيات البرنامج تكون منفصلة عن استدعاءات قواعد البيانات أو الاتصال. وبذلك يمكن استبدال تقنية الاتصال أو نوع قواعد البيانات بسهولة.
ماذا تقصد ب Layers بارك الله لك ؟
أمر آخر: أرى أن تكون في البرنامج خاصية حقيقية ينفرد بها تميزه عن باقي البرامج الشبيهة. جميل, هل من اقترآح, سأحاول التفكير بهذا الشئ انا ايضى ان شاء الله,
بالتوفيق للجميع اخوآني الكرام,
o15s19
17-01-2010, 11:05 AM
بالنسبة للشبكة: أرى استكشاف DirectPlay في DirectX فهي توفر الكثير من الجهد و الوقت.
حسب ما ذكر
DirectPlay was traditionally one of the components of DirectX that received less attention, but for DirectX version 8 it received a major overhaul and became a relatively lightweight networking library. However, as part of Microsoft's unveiling of XNA in 2004, Microsoft revealed that DirectPlay would be deprecated in favor of Games for Windows - Live technology already available on Xbox and being ported for use on Windows PCs. DirectPlay will be supported in DirectX DLLs for the lifetime of Microsoft Windows XP, but from the autumn of 2007 [2] the headers and libraries — vital components if developers wanted to develop new programs that utilize the technology — were absent from DirectX SDK.
أن المكتبة في طور النسيان لأن MS تطور نوعا أخر من من المكاتب بعصر ال XBox و التي تحاول نقلها أي التقنية الجديدة لل XBox إلى PC
كما أن ال Indy يدعم كل هذه الأمور TCP و UDP و أغلب البروتوكولات و يمكن الاستفادة منها بشكل كامل كما أنها نوعا ما مدعومة عكس ال DirectX الغير مدعومة و التي على ما أظن توقفت بعام ال 2000 و قام عندها أحد الأشخاص باصدار UnDelphix
http://www.micrel.cz/Dx/
رأي أن نبقى على الاندي. ما رأيك أخي shagrouni و أخي AL-MOB4RM3G
بالنسبة لقاعدة البيانات أنا غير معترض طالما سأتعلم شيئا جديدا أما بالنسبة للبرمجة على شكل طبقات فإن شاء الله نتبعها
shagrouni
17-01-2010, 01:41 PM
مرحبا،
- DirectPlay تضمن لك وصول كل بايت إلى وجهته بالترتيب المطلوب دون مجهود إضافي من المبرمج.
- هل تغني هذه المكتبة عن استخدام مكونات ال Indy مثلا ؟
فيما يخص الإرسال و الاستقبال فهي تغني عن Indy ، و لكن Indy كما نعلم لديها الكثير
من الخدمات الفرعية و التي قد تجدها مفيدة، و لا يوجد ما يمنع من استخدام التقنيتين معا.
فيما يخص DirectX فأنا أجد أن مكونات DelphiX أو UnDelphix ممتازة وتعزل المبرمج
من صداع التعامل المباشر مع DirectX كما أنها تدعم دلفي 2010.
و عموما باستخدام مفهوم الطبقات و فصل أجزاء البرنامج إلى وحدات منفصلة حسب تخصصها؛
يمكن دعم أو تنفيذ أكثر من تقنية، بحيث تكون تقنية DX موجودة و كذلك Indy وغيرها في نفس الوقت،
و تكون من ضمن خيارات البرنامج (السيرفر).
- بالنسبة للدعم المستقبلي ل DirectPlay فهي نقطة جديرة بالاعتبار.
- المقصود بالطبقات Layers :
تقسيم منطقيات البرنامج إلى طبقات:
نورد الأمثلة التالية بأقل ما يمكن من تعقيد:
في الفورم التي تعرض قائمة الأسماء نحتاج لعرض اسم أحد المشتركين:
// Form frmChat
procedure TfrmChat.ShowContactDetail(UderId: string);
var
sDisplayName: string;
begin
sDisplayName := uChatManager.GetDisplayName(UsirId);
lblDisplayName.Caption := sDisplayName;
//...
//....
end;
//Unit uChatManager
function GetDisplayName(UderId: string): string;
var
sDisplayName: string;
begin
sDisplayName := uChatDataManager.GetDisplayName(UsirId);
if Trim(sDisplayName) <> '' then
result := sDisplayName
else
result := '<Not Specified>';
end;
//Unit uChatDataManager
function GetDisplayName(UderId: string): string;
var
sDisplayName: string;
sSql: string;
Q: TADOQuery;
begin
sDisplayName := '';
result := '';
sSql := 'SELECT DisplayName FROM chatAccount WHERE Disply_Name = ' +
QuotedStr(UserId);
if ADO_USED then
begin
Q := TADOQuery.Create(nil);
try
Q.Connection := ADoConnection; //
Q.SQL.Text := sSql;
q.Open;
if not q.FieldByName('DisplayName').IsNull then
sDisplayName := q.FieldByName('DisplayName').AsString;
finally
q.Free;
end;
end;
if SQLLITE_USED then
begin
//....
//....
end;
result := sDisplayName;
end;
الفكرة هنا فيما يخص مفهوم الطبقات أن الفورم لا تعلم شيئا عن قاعدة البيانات، و لا عن منطقية البرنامج،
و لكنها تطلب المعلومة وتعرضها فقط. المعلومة تطلبها من الوحدة الخاصة بمنطقيات البرنامج و هي:
uChatManager الذي بدورها لا تعلم شيئا عن قاعدة البيانات ولكن تطلب المعلومة من وحدة uChatDataManager
التي لديها المعلومات الخاصة بقاعدة البيانات و جداولها و حقولها وأيضا تقرر ما نوع تقنية قواعد البيانات
التي يجب استخدامها وكيفية استدعائها (خشية التعقيد، هذه الوحدة أيضا يمكن فصلها).
فيما يخص الشبكة و الاتصال نأخذ المثال التالي:
تقوم الفورم مثلا بنشر Broadcast رسالة للجميع :
// Form frmChat
procedure TfrmChat.BroadCast(AText: string);
begin
if uChatManager.BroadCast(SenderId, AText) then
ShowMessage('OK');
else
ShowMessage('Not Ok');
end;
//Unit uChatManager
function BroadCast(SenderId: string; AText: string): boolean;
var
sDisplayName: string;
begin
result := false;
if (Trim(AText) <> '') and (SenderId <> '') then
begin
sDisplayName := uChatDataManager.GetDisplayName(SenderId);
AText := sDisplayName + ': ' + AText;
result := uChatNetManager.BroadCast(AText) then
end;
end;
//Unit uChatNetManager
function BroadCast(AText: string): boolean;
begin
if DX_Used then
begin
result := uNetDirectPlay.BroadCast(AText); // unit for handling DirectPlay calls
end;
if INDY_Used then
begin
result := uNetIndy.BroadCast(AText); // unit for handling Indy calls
end;
end;
تقوم الفورم التي لا تعلم شيئا عن تقنيات الاتصال و الشبكة بإرسال طلب نشر رسالة من الوحدة uChatManager ،
فتقوم الوحدة بمراجعة الرسالة و إضافة اسم المرسل لها. ولإنها هي أيضا معزولة عن تقنية الاتصال
المستخدمة فإنها تقوم بالاستعانة بالوحدة uChatNetManager ، التي ستقرر أي نوع من تقنيات الاتصال
سيتم استخدامها، فإذا كان المعتمد هو DirectPlay ستقوم بتمرير الرسالة إلى الوحدة uNetDirectPlay
التي تعلم كيف تتعامل مع هذه التقنية و تمرر الرسالة لها لنشرها. أما إذا كان المعتمد فهو INDY
لإتها تحول الرسالة إلى الوحدة الخاصة بالنعامل مع تقنيات اندي وهي uNetIndy.
طريقة فصل البرنامج إلى طبقات متخصصة تتيح لنا مرونة و سيطرة أكبر، مثل حرية وسهولة تغيير
التقنيات المستخدمة دون المساس بباقي وحدات البرنامج التي ليس لها علاقة مباشرة بهذه التقنيات.
شكرا للجميع.
AL-MOB4RM3G
17-01-2010, 03:19 PM
جزآكم الله خيرا اخوآني الأحباب,
و لكن indy كما نعلم لديها الكثير
من الخدمات الفرعية و التي قد تجدها مفيدة، و لا يوجد ما يمنع من استخدام التقنيتين معا.
و عموما باستخدام مفهوم الطبقات و فصل أجزاء البرنامج إلى وحدات منفصلة حسب تخصصها؛
يمكن دعم أو تنفيذ أكثر من تقنية، بحيث تكون تقنية dx موجودة و كذلك indy وغيرها في نفس الوقت،
ان كانت مكتبة DirectPlay لا تغنينا نهآئيا عن ال Indy فبرأيّي انه لايس هناك سبب لتعامل معها ان لم يكن بها ميّزة تتيح لنا شئ لا يمكن عمله بالإندي, وهذا يعود لسببين,
1. تبسيط الأمور في الدرجة الؤلى, فمثلي انا مثلا و اظن الكثير من امثالي لا يوجيد اصلا التعامل حتّى مع الإندي, فإن اختلطت الأمور, وأصبحنا نتعامل مع ال DirectPlay و الإندي في آن واحد فهذا سيصعب على من اراد تعلم عمل شات مثلا ان يتعلمه,
2. الإندي اكثر شهرة والله اعلم, يعني بالنسبة للمسـآعدة ان احتآج احد الى ذلك فما عليه الّى ان يسئل, ام بخصوص ال DirectPlay فأظن انه من ارآد مسـاعدة فسيوآجه صعوبة في الإجآبة والله اعلم (مجرد فكرة شخصيّة, لم ابحث في النت عن هذا)
خلآصة الأمر, أميل الى رأي الأخ o15s19 ,,حاليّيا,
رأي أن نبقى على الاندي. ما رأيك أخي shagrouni و أخي AL-MOB4RM3G
ما قولك اخي shagrouni,, موآفق؟ معترض بشدّة ؟ :rtfm:
ان شاء الله سنكون متفقين بالإجمآع :)
والسلام عليكم
shagrouni
17-01-2010, 05:22 PM
السلام عليكم،
سادتي
اقتراحي بخصوص استخدام DirectX مجرد اقتراح، و دعوة لاستكشاف المزيد. أنا وجدته مفيدا،
استخدمته في برنامج من النوع الثقيل (خادم/ و محطات تزيد على 40 محطة، و حجم تبادل البيانات كبير
من حيث العدد والكمية والتوالي) وكل حركة تتم في محطة تنعكس على باقي المحطات لحظيا تقريبا, باختصار
هو برنامج نمذجة ومحاكاة من نوع: MOFPS أي : multiplayer online first-person shooter
قبل ذلك كنت استخدم Indy في نفس البرنامج ثم تحولت إلى DirectX لأنه يوفر علي الكثير من التفاصيل.
والبرنامج الآن يدعم كلا الأسلوبين.
لكن أيضا توجد الناحية التعليمية: المشروع كما فهمت لأغراض التعلم، برمجة (TCP/IP)
و DirectX تعزلك عن معرفة ما يجري ولا تقدم للمبتدئ ما يفيده في تعلم هذا المجال لأنها تهتم بكل
التفاصيل، بالمقابل فإن Indy تعطي للمبتدئ فكرة أعمق، ولكن لا ننسى أيضا أنها تقوم بتغليف الكثير من
التفاصيل، ومن برمج ببروتوكولات TCP/IP مباشرة سوف يفهم ماذا أعني.
الخلاصة: إذا كانت الأغلبية مرتاحة لاستخدام Indy اللهم فبارك، المهم هو الحماس للتقنية التي تريد
استخدامها، و التحرك السريع لتنفيذها.
أحبكم في الله
خالد الشقروني.
AL-MOB4RM3G
17-01-2010, 06:00 PM
اقتراحي بخصوص استخدام DirectX مجرد اقتراح، و دعوة لاستكشاف المزيد. أنا وجدته مفيدا،
استخدمته في برنامج من النوع الثقيل (خادم/ و محطات تزيد على 40 محطة، و حجم تبادل البيانات كبير
من حيث العدد والكمية والتوالي) وكل حركة تتم في محطة تنعكس على باقي المحطات لحظيا تقريبا, باختصار
هو برنامج نمذجة ومحاكاة من نوع: MOFPS أي : multiplayer online first-person shooter
قبل ذلك كنت استخدم Indy في نفس البرنامج ثم تحولت إلى DirectX لأنه يوفر علي الكثير من التفاصيل.
والبرنامج الآن يدعم كلا الأسلوبين.
السلام عليكم من جديد,
بخصوص البرنآمج الذي برمجته اخي الشقروني, هل هو تجآري ام انه متوفر على النت ؟ (اود رؤيته وتجربته بارك الله لك ان كان متوفر على النت:) )
الخلاصة: إذا كانت الأغلبية مرتاحة لاستخدام Indy اللهم فبارك، المهم هو الحماس للتقنية التي تريد
استخدامها، و التحرك السريع لتنفيذها.
جميل, إذن فأنت موآفق على هذا, على بركة الله إذن,
بخصوص قآعدة SQLite اي من البرآمج تفضل تستخدم اخي الشقروني ؟
البرنآمج الأصلي يبدوا على Terminal, ولكن هناك برآمج مثل,
SQLITE Expert, ويوجد هناك نسخة مجّآنيّة ايضى,,
http://www.sqliteexpert.com/download.html
هنآك ايضى, SQLite Database Browser, ايضى مجّآني,
http://sourceforge.net/projects/sqlitebrowser/files/
لكن ايّهما تفضّل؟ حتى يستخدم جميعنا نفس البرنامج (تسهل بعض الشئ لو استخدمنا نفس البرنامج لنتعامل مع القآعدة)
أحبكم في الله
احبك الذي احببتنا فيه اخي الحبيب,
باتوفيق,
shagrouni
17-01-2010, 07:30 PM
مرحبا،
أخي الكريم، ليس لدي خبرة في استخدام SqlLite و لكن من بعض الاختبارات
السابقة بخصوص دلفي فأنا ارتحت مع : A simple Delphi wrapper for Sqlite 3
http://www.itwriting.com/blog/?page_id=659
و يبدو من الموقع أن صاحبه لا يزال مواظب على رعايته.
أيضا هذه الصفحة تسرد مجموعة من المكونات الخاصة ب SQLite
http://stackoverflow.com/questions/850435/delphi-components-to-use-with-sqlite
بالنسبة لأدوات استعراض الجداول ومناولتها، فأي واحد يكون كافيا شرط أن يدعم العربية و اليونيكود.
SQLite Database Browser يبدو كافيا.
بالنسبة للبرنامج الذي أشرت إليه، فهو برنامج خاص لصالح إحدى الجهات
تحياتي
kachwahed
17-01-2010, 08:02 PM
السلام عليكم
كمساهمة :D
DevArt UniDAC v.3.00.0.5 (http://www.delphi4arab.com/forum/showthread.php?t=2368)
بالتوفيق :).
o15s19
17-01-2010, 08:30 PM
السلام عليكم
كمساهمة :d
devart unidac v.3.00.0.5 (http://www.delphi4arab.com/forum/showthread.php?t=2368)
بالتوفيق :).
مساهمة في وقتها
بارك الله بك
B.M.AbdelAziZ
19-01-2010, 01:18 PM
السلام عليكم
اولا احب ان ارحب بالاخ خالد الشقروني معنا بالمنتدى كونه من احد اعلام دلفي في العالم العربي
ثانيا
كان الأخ عبد العزيز اقترح قآعدة MySQL في المشروع السآبق
كان ذلك قبل ان تشتريها Sun حيث لم تعد مجانية 100% ثم بعدها اشترتها Oracle
بالنسبة لموكونات UniDAC فكما تعلمون هي غير مجانية
فان اردتم ان يكون المشروع بمكونات مجانية فقط من الاحسن استخدام مكونات Zeos
http://sourceforge.net/projects/zeoslib/
تدعم اهم قواعد البيانات المعروفة اضافة انها تدعم FreePascal/Lazarus في حالة التفكير بنسخة من المشروع 64Bits او على نظام غير W!ndows
وبالتوفيق
AL-MOB4RM3G
19-01-2010, 01:45 PM
بالنسبة لموكونات UniDAC فكما تعلمون هي غير مجانية
فان اردتم ان يكون المشروع بمكونات مجانية فقط من الاحسن استخدام مكونات Zeos
بالنسبة لي فليست هناك مشكلة,
المهم عندي ان اعرف كيف اتعامل مع مثلا مكونات ال UniDAC,
واضآفة الى ذلك فلمكون الذي وضعته اخي عبد العزيز, يبدوا قد توقف دعمه ؟
ما قول الأخ الشقروني والأخ o15s19 في ان كانت المكونات مجّآنيّة ام لا, ؟
بالتوفيق,
B.M.AbdelAziZ
19-01-2010, 01:53 PM
فلمكون الذي وضعته اخي عبد العزيز, يبدوا قد توقف دعمه ؟
من قال لك ذلك!
الاصدار الأخير 6.6.6 صدر من اقل من 3 اسابيع والاصدار السابع قيد التطوير
http://zeos.firmos.at/portal.php
صحيح التطوير احيانا ينام لكنه موجود وهذا حال الكثر من المشاريع المجانية وانشغال اصحابها بامور الحياة...
AL-MOB4RM3G
19-01-2010, 02:38 PM
عذرا اخي عبد العزيز, اختلطت عليّ الأمور,
يبدوا قد توقف دعمه ؟
لم اقصد توقف الدعم, بل قصدت انه ليس مدعوم من قبل اصدآرات الدلفي الجديدة, (دلفي 2010)
بارك الله لك,
shagrouni
19-01-2010, 11:37 PM
السلام عليكم
أشكر محمد عبد العزيز على كلماته، لقد وضعتني في مكان يصعب علي تصوره.
بالنسبة لـ ZEOSLib:
حقيقة لم أتعامل معها من قبل، و لكن ألقيت نظرة على موقعهم (شكرا للأخ عبد العزيز) و تبدو لي واعدة.
آخر إصدارة تجريبية (7.0.0-alpha) تدعم 2010.
AL-MOB4RM3G
20-01-2010, 09:27 AM
آخر إصدارة تجريبية (7.0.0-alpha) تدعم 2010.
همم, حاولت تسجيلها على دلفي 2010 لكن لم افلح, المكون مازال Alpha,
هل تقترحون ان نصبر حتى يصدر اصدار stable داعم للدلفي 2010 ؟ ام رأيكم ان تختار بديل عن هذه المكونات ؟
يمكن ايضى بدأ العمل مع السرفر حتى يصدر مثلا اصدار stable للدلفي 2010,, ؟ ما قولكم,
بالتوفيق,
B.M.AbdelAziZ
20-01-2010, 01:17 PM
من الاحسن اختيار اي قاعدة والبدء بالمشروع قبل ان تبرد الهمم
وعند الحاجة او فيما بعد يمكن تغيير نوع القاعدة
وبالتوفيق
AL-MOB4RM3G
20-01-2010, 03:13 PM
والبدء بالمشروع قبل ان تبرد الهمم
جميل, اليوم في المسآء ان شاء الله ارفع اول نسخة من البرنامج,
بالتوفيق للجميع ان شاء الله, :bye1:
AL-MOB4RM3G
20-01-2010, 06:59 PM
اخوآني الكرام,
نحاول ان شاء الله ان نكتب ملاحظات قدر المستطاع في المشروع حتى يتعلم من لا يعرف شئ معيّن من الكود,
(سؤآل, تريدون الملاحظات بالعربيّة ام الإنجليزيّة ؟) وضعت الملاحظات هذه المرّة بالإنجليزية حتى يستطيع الجميع القرآئة بدون مشآكل ان شاء الله,,
على كل حال,
هذه بدآية المشروع في المرفقات,
سهل وبسيط, لا شئ يحتاج الى شرح, حتى المبتدئ يمكنه فهم الكود ان شاء الله
في المستقبل كيف تسير الأمور اخوآني الكرام, ؟
هل برأيكم ان توزع الأمور و المهام ؟ ام يقوم من لديه رغبة بالمشآركة بتحميل مثلا المرفق الأخير و العمل عليه وبعدها رفعه للمنتدى وكتآبة مثلا ما قام الشخص به من عمل ؟
في المشروع ايضى ملف Bat, يشترط استخدامه قبل رفع السورس الى المنتدى,, (بارك الله لك اخي كاشواحد)
اسم الملف حآليّا, Delphi4arab_Chat_01.rar , من يقوم برفع الكود الى المنتدى فليستخدم نفس الإسم لكن مع تغيّير الرقم في النهآية ان شاء الله
النسخة المستخدمة هي, دلفي 2010
بالتوفيق اخوآني,
o15s19
21-01-2010, 09:27 AM
السلام عليكم
أنا أول المعدلين
+ تم عزل السرفر عن الوحدة الأساسية تحقيقا للبرمجة عن طريق ال Layers
*القليل من التحسينات .
الأن اصبح بالامكان العمل بوحدة السرفر كوحدة مستقلة عن البقية
بالنسبة للتعديلات بداخل اللفي بالانكليزي أما بالمنتدى بالعربي أو بالأنكليزي ما بتفرق معي
سلامي
AL-MOB4RM3G
21-01-2010, 06:51 PM
جميل اخي o15s19, بارك الله لك على تصحيحي, :)
طيب اظن بما انه العمل الأكبر هو تقربا من جهة الكلينت و الله اعلم,
اقترح وصل قآعدة البيانات بالسرفر,
ما هي الأمرور التي يجب ان تكون بالنسبة للمعرفات,Users
UserId
UserName
UserPassword
UserDisplayName
UserStatus
UserEmail
هل من شئ ناقص الآن ؟
هل يجب وضع مثلا UserIP , UserPort في قاعدة البيانات وتعديلها عند عمل LogIn للمستخدم ؟
بارك الله لكم
o15s19
22-01-2010, 10:59 AM
يجب أن نتفق بالبداية على المتغير الأساسي بالبرنامج (اسم - أي بي - كود - ايميل)و هو الحاكم بحال التشابه مثلا لا يجوز العمل بنفس الايميل أو الاسم أو ال ID من جهاز أو أكثر من جهاز
بالنسبة للمعلومات الأخرى فهي حسب حاجتنا و حسب الخيارات التي يمكننا وضعها بالبرنامج مثلا (على سبيل المثال نقوم بأخذ Mac Address و ذلك للاستفادة من ميزة ال WOL أو Wake on Lan ) و هلم جرا...
AL-MOB4RM3G
22-01-2010, 06:38 PM
الإسم طبعا هو الأساس والله اعلم, وكذلك الميل,
يعني, لا يمكن الدخول بنفس الإسم مرتين, ولا يمكن التسجيل بنفس الميل مرّتين,
حسناً, صممت قآعدة بيانات, ووصلتها بالمشروع, يمكن طبعا اضآفة المزيد من الأمور فيما بعد,
سأجري بعض التحسينات و ارفع المشورع من جديد ان شاء الله تعالى, (ان لم يكن اليوم, فغداً ان شاء الله)
ما قول الأخ الشقروني؟ هل من شئ يجب اخذه بالإعتبار؟ (فخبرتك ما شاء الله عليها, اللهم بارك)
بارك الله لكم,
AL-MOB4RM3G
23-01-2010, 11:39 AM
اخوآني الكرام, في المرفقات المشورع,
التعديلات هي,
اضآفة UClientCore للمشروع,
اضآفة sqlite3_db_core للمشورع, (وحدة قآعدة البيانات)
حاولت وصل قآعدة البيانات من خلال Layers لكن لم افلح كثيرا, هناك خلل, ربما احد الإخوة يدلّني عليه ان تمكن منه,,
استخدمت مكونات ال DISQLite3 موجودة هنا,, (http://www.delphi4arab.com/forum/showthread.php?p=13714#post13714) يمكن تغيّيرها ان اردتم, لكن هذا ما استطعت عمله :)
بالتوفيق,
DaRk-StAr
23-01-2010, 06:09 PM
مرحبا ,
اخواني انا جديد بالبرمجة بأستخدم دلفي ولكن لدي خبرةطويلة بالبرمجة بأستخدم برامج اخرى كــ C# و PHP و JAVA
لكن اصبحت اميل لأستخدام دلفي لأنة لا يحتاج الى فريم ورك
وانصحكم هنا بأستخدام MYSQL و PHP للتحكم بالبرنامج خصوصا السيرفر
وهو لا يحتاج مكونات فيمكن ربط Delphi ب MYSQL دون الحاجة الى اي مكون و MYSQL بسيطة جدا
واتمنى ان اكون قد افدتكم بالمشروع
AL-MOB4RM3G
23-01-2010, 08:10 PM
اولا, اهلا وسهلا ومرحبا بك معنا اخي DaRk-StAr
جميل اخي الكريم, بالنسبة لإدخال لغة ال PHP في المشروع فلا اظنّه وآرد وإن كان ربما اسهل ولكن المشروع الهدف منه التعلم, وهذا منتدى متخصص في الدلفي, وهذا يعني انه من الوآرد جدّا ان الكثير فينا لا يعرف لغة ال php وانا اوّلهم,
نحاول الإلتزام بلغة الدلفي قدر المستطاع, او بالأحرى كلّيّا,
وهو لا يحتاج مكونات فيمكن ربط Delphi ب MYSQL دون الحاجة الى اي مكون و MYSQL بسيطة جدا
حقّا ؟ جميل,
ما رأيك ان تعمل لنا درس مستقل بهذا الشئ واكون لك من الشآكرين ؟ :) (يمكن فتح موضوع في قسم دروس للمبتدئين)
بارك الله لك اخي الكريم وزادك من فضله,
بالتوفيق,
shagrouni
23-01-2010, 10:31 PM
مرحبا،
أقدر فيكم روح المبادرة و النشاط لبدء العمل.
لا يسعني تجربة الكود لأن نسخة الدلفي التي أستخدمها الآن هي رقم 6.
بعض النقاط أود سردها (بدون ترتيب):
1- يجب مداومة تنقيح التوليف = الكود و تنظيفه، خاصة و نحن في بداية المشروع ، من ذلك:
إزالة الأكواد الميتة التي ليس لها استخدام.
إزالة الإشارات لملفات INDY من الفورم الرئيسية (uses)
تسمية المتحكمات التي لم تسمى بعد، مثل عناصر لائحة الأوامر، و الفورم الرئيسية.
عند التسمية حبذا (كلما أمكن ذلك) استخدام الأساليب النمطية المتعارف في مجتمع دلفي.
http://www.econos.de/delphi/cs.html#Components_Instance
http://edn.embarcadero.com/article/10280
http://jcl.delphi-jedi.org/documents/styleguide.html
http://edn.embarcadero.com/article/27983
2- مسار قاعدة البيانات يمكن حفظه في ملف نصي خارجي. (ini أو xml)
3- ملاحظة امكانية وجود ملفات كود مشتركة بين امشروعي السيرفر و الكلاينت.
4- لا ننسى إنهاء الكينونات التي يتم إنشاؤها بالأمر Create.
5- خلق الكينونات قبل إستخدامها : مثلا DISQLite3Database1 لا يوجد ما يشير إلى إنشائها.
6- تحاشي المخاطر مبكرا:
هل تم تجربة الاتصال الفعلي بين السيرفر و أكثر من محطة و تبادل البيانات بينها.
هذه التجارب تكون في بدايات المشروع؟ للتأكد من سيطرتنا على التقنية وقدرتها على تلبية ما نحتاجه،
وكذلك لترسم لنا خريطة مسبقة لكيفية تنظيم الاجرائيات في ملفات البرنامج.
يعني يجب أن نقوم منذ الآن بتجربة و تنفيذ الحالات الرئيسية في البرنامج: طلب الاتصال من الكلاينت،
تأكيد الاتصال من السيرفر، تأكيد تبادل البيانات بين كلاينت و آخر مباشرة أو عبر السيرفر، خروج الكلاينت
من خدمة السيرفر.
نفس الأمر فيما يخص قواعد البيانات، يتم تجربة الحالات التي نحتاجها مسبقا، حتى نكون متأكدين من أن التقنية
التي اخترناها ستلبي احتياجاتنا، و نتأكد أيضا من سيطرتنا عليها، و التقليل من المفاجآت غير المتوقعة .
يعني أن النقاط التي تكون حيوية وقد تشكل عناصر مخاطرة نهاجمها هي أولا.
7- بالنسبة لعزل مكونات البرنامج حسب مسؤوليتها و بناء المشروع على شكل طبقات Layers :
تخيل أننا نريد الآن في مشروعنا هذا أن تستخدم ثلاث أنواع من تقنيات التعامل مع الشبكات والاتصال،
بحيث تكون خيارا متاحا لمشغل البرنامج: الخيار الأول استخدام مكونات INDY ، و الخيار الثاني استخدام
مكونات DirectX و الخيار الثالث استخدام مكونات Internet التي تأتي مع دلفي.
بالتأكيد، سوف تعيد حساباتنا و نعيد تنظيم الكود بحيث تضمن إتاحة هذه الخيارات الثلاثة ، و سوف نجد
أنفسنا تلقائيا مضطرين لتقسيم برنامجنا إلى مناطق أو ملفات معزولة كل حسب تخصصها.
بالتوفيق.
o15s19
26-01-2010, 05:21 AM
السلام عليكم
أولا ألف شكر للأخ خالد على ملاحظاته القيمة
التغييرات التي تمت على D4A Chat
*الكثير من التحسينات المرئية (ما بعرف إذا زوقي حلو :kick:)
+العمل على قاعدة البيانات (اصبح بالإمكان انشاء و فتح و إغلاق قاعدة البيانات)
+تحسين عملية ايقاف السرفر(اتمنى أن يكون ملائما )
+بناء وحدة الكلاينت(قريبا و سيصبح جاهز للاتصال)
+وضع ايقونة للكلاينت
طبعا نظام قاعدة البيانات يحتاج للتعديل قليلا و سيعمل 100%
إن شاء الله اليوم بتصل الكلاينت مع السرفر لأول مرة في التاريخ في برنامج D4A
سلامي
AL-MOB4RM3G
26-01-2010, 06:37 PM
بارك الله لكم اخي الشقروني و اخي o15s19 ,,
ملاحظات جداً رآئعة وثمينة من الأخ الشقروني, وتعديل غآية في الجمال من الأخ o15s19,
بخصوص قآعدة البيانات, (لا ادري حقيقة لكن هي الشئ الوحيد الذي يقلقني:()
كنت ابحث في النت عن هكذا مشورع, وما اكثرها, لكنها لا تكتمل للأسف,
على كل حال, وجدت هذا المخطط لقآعدة البيانات, فأعجبني, وبما ان المشورع مشآبه لهذا (لكن الّغة تختلف) فأحببت ان اطلعكم عليه لعلنا نستفيد منه او نأخذ فكرة منه, على كل حال, حقوق هذا المخطط يعود الى الأخ DreamNet بارك الله له,
الجدول الأول يخص الأعضاء Users :
رقم العضو
اسم المستخدم
كلمة المرور
تاريخ التسجيل
البريد الالكتروني
حالة الاتصال (نعم/لا)
الجدول الثاني لقائمة الأصدقاء:
رقم العضو
رقم الصديق
صديق (نعم/لا)
الجدول الثالث للشات :
رقم المرسل
رقم المرسل إليه
تاريخ الارسال
نص الرسالة
وصلت(نعم/لا)
جدول اختياري معلومات Profile :
رقم العضو
العمر
الصورة
الجنس
البلد
الاهتمامات
بالنسبة للأصدقاء يمكن البحث عنهم في قائمة الأصدقاء حسب رقم العضو ثم التأكد من حالة العضو هل هو صديق =نعم اذا كان لا فهو في قائمة الحظر
وهنا فان تكوين هذا الجدول سيسهل كثيرا عملية البحث عن الأصدقاء وكذلك عملية الحذف والحظر
على كل حال, كنت مشغولا في اليومين المآضيين, وربما غداً وبعد غد ايضى,
لكنني سأحاول التطوير ولو بشئ بسيط ان شاء الله,
هنا ايضى سؤآل,
فيما يخص حالة السرفر كان هناك shape يعطي الّون الأخضر او الأحمر على الفورم حسب الحآلة,
ارى انك اخي الكريم عدلت حتى يتم انشآء ال Shape في وقت التنفيذ,
السؤآل هو, هل هو افضل من النآحية العمليّة ؟
يعني اسرع بالنسبة لتنفيذ الكود مثلا ؟ ام من نآحية التنظيم ؟ او شئ آخر؟
بالتوفيق اخوآني,
paix144
26-01-2010, 08:22 PM
حالة السرفر كان هناك shape يعطي الّون الأخضر او الأحمر على الفورم حسب الحآلة
السلام عليكم
لماذا لا تستعمل أيقونات أخي؟
B.M.AbdelAziZ
27-01-2010, 09:02 AM
بخصوص قآعدة البيانات, (لا ادري حقيقة لكن هي الشئ الوحيد الذي يقلقني)
لا تقلق، امرها سهل ان شاء الله
ليس شرطا انشاء كل الجداول الان
يمكن التعديل/التغيير فيما بعد حسب الحاجة
بعض الجداول الخاصة بالعضو يمكن وضعها بClient لتقليل الضغط على Server
AL-MOB4RM3G
27-01-2010, 06:51 PM
خير ان شاء الله, بارك الله لك اخ عبد العزيز,
اخوآني في الحقيقة لدي سؤآل آخر ايضى بارك الله لكم,
فيما يخص التعامل مع البرنامج بطريقة ال Layers (لم اتعامل بهذه الطريقة من قبل)
هل يعني هذا انه كل شئ مثلا يخصّ ال IdTcpClient يكون في وحدة ال UClientCore ؟
للتوضيح, لو اود ان احدد ال Host و Port ومنثم عمل Connect لل كلينت, اين يتم كل هذه الأمور ؟
هل يجب مثلا عمل Procedure في uClientCore به تحدد الأمور مثل الهوست و البورت ومنثم في ال D4A_Client_Main يتم استدآء هذا ال Procedurre وبعدها عمل Connect في D4A_Client_Main؟
بارك الله لكم
o15s19
28-01-2010, 10:27 AM
السلام عليكم
التغييرات التي تمت على D4A Chat بتاريخ 28-1-2010
+إضافة نظام للكشف الذاتي عن السرفر (لا يعمل الأن بحاجة إلى نظام أخر للكشف عن الأيبيات و لكن يمكن تجربته بحال معرفة أي بي السرفر)
+إضافة بعض الخيارات (اسم السرفر)
+العمل على قاعدة البيانات قليلا (من ناحية الفتح و الإغلاق و الإنشاء)
+بناء نافذة التسجيل في الكلاينت
+بناء نافذة للسرفرات الموجودة
*القليل من التحسينات
سلامي
o15s19
28-01-2010, 10:36 AM
هنا ايضى سؤآل,
فيما يخص حالة السرفر كان هناك shape يعطي الّون الأخضر او الأحمر على الفورم حسب الحآلة,
ارى انك اخي الكريم عدلت حتى يتم انشآء ال Shape في وقت التنفيذ,
السؤآل هو, هل هو افضل من النآحية العمليّة ؟
يعني اسرع بالنسبة لتنفيذ الكود مثلا ؟ ام من نآحية التنظيم ؟ او شئ آخر؟
لأني اضطررت لوضع ال TShape في ال StatusBar و التعليمة يجب أن تكون من ناحية ال Parent و لكن حاولت وضعها في Design Mode و لكن لم افلح هذا السبب فقط
بخصوص قآعدة البيانات, (لا ادري حقيقة لكن هي الشئ الوحيد الذي يقلقني)
لا تقلق أخي الكريم دعنا نعمل بالقاعدة التي بين أيدينا الأن و بعدها نتطور حسب الحاجة
هل يعني هذا انه كل شئ مثلا يخصّ ال IdTcpClient يكون في وحدة ال UClientCore ؟
للتوضيح, لو اود ان احدد ال Host و Port ومنثم عمل Connect لل كلينت, اين يتم كل هذه الأمور ؟
يعني كل ما يتعلق بالاتصال يتم في هذه الوحدة فقط و كل ما يتعلق بالداتا يكون بوحدة الداتا و يتم التواصل بين الوحدات
يعني نحدد ال IP و ال Port في الوحدة الأساسية (أو بوحدة الكشف عن السرفر ) و عندها نرسل لوحدة الكلاينت امر الاتصال و عندها تقوم وحدة الاتصال بالاتصال
و الجواب الشافي عن أخي خالد و أخي عبد العزيز
AL-MOB4RM3G
28-01-2010, 06:23 PM
أني اضطررت لوضع ال TShape في ال StatusBar و التعليمة يجب أن تكون من ناحية ال Parent و لكن حاولت وضعها في Design Mode و لكن لم افلح هذا السبب فقط
اها, طيب خير,
--
اخي الكريم o15s19, اي نسخة من الويندوز تستخدم ؟ (هل تجلس على 7؟) بارك الله لك
سأعود بعد جوآبك:)
AL-MOB4RM3G
28-01-2010, 07:40 PM
تصحيح خلل في المقآرنة عند انشآء مستخدم جديد,
في الكود, في الفورم NewUserFrm
procedure TNewUserForm.SpeedButton1Click(Sender: TObject);//Register
begin
if NameEdt.Text = '' then //Check User Name
begin
NameEdt.Color := $008080FF ;
Exit ;
end;
if (PwdEdt1.Text <> PwdEdt2.Text) OR (PwdEdt1.Text = '' ) then //Check Password
begin
PwdEdt1.Color := $008080FF ;
PwdEdt2.Color := $008080FF ;
Exit ;
end;
if EmailEdt.Text = '' then //Check Email
begin
EmailEdt.Color := $008080FF ;
Exit ;
end;
// Start Registration Process Here
end;
هناك خطأ يحدث مع الألوان,
في حآلة المقآرنة التي تتم بين ال Password1 و ال Password2 ويكون هناك خلل تصبح حينها ال Edit 1 و 2 بالون الأحمر, في حآلة تصحيح الخلل من PassWord2 لا يرجع الون الى الأبيض حتى بعض الضغط على التسجيل,
الحلّ, كتآبة الكود التآلي,
procedure TNewUserForm.SpeedButton1Click(Sender: TObject);//Register
begin
if NameEdt.Text = '' then //Check User Name
begin
NameEdt.Color := $008080FF ;
Exit ;
end;
if (PwdEdt1.Text <> PwdEdt2.Text) OR (PwdEdt1.Text = '' ) then //Check Password
begin
PwdEdt1.Color := $008080FF ;
PwdEdt2.Color := $008080FF ;
Exit ;
end
else begin // ----------------- هنا كان الخلل,
PwdEdt1.Color := $00ffffff ;
PwdEdt2.Color := $00ffffff ;
end;
if EmailEdt.Text = '' then //Check Email
begin
EmailEdt.Color := $008080FF ;
Exit ;
end;
// Start Registration Process Here
end;
او استغلال ال PwdEdit 2 onChange ووضعه كما هو في الإدين الأول,
procedure TNewUserForm.PwdEdt2Change(Sender: TObject);
begin
PwdEdt1.Color := ClWhite ;
PwdEdt2.Color := ClWhite ;
end;
وسآمحني لآنني وضعت الحلّ هنا, لكن لا استطيع رفع المشروع الى المنتدى حآليّا, والسبب ستعرفه في سؤآلي في المشآركة السآبقة,
بالتوفيق اخوآني,
shagrouni
29-01-2010, 02:38 AM
السلام عليكم
مرفق مثال لبرنامج مقسم إلى عدة طبقات أو واجهات.
المثال مبني على مشروع برنامج المحادثة، الذي نحن بصدده، وقد تم تقسيمه كالتالي:
طبقة العرض Presentation و المتمثلة في واجهات الشاشة Forms ،
وهي مسئولة فقط عن استقبال المدخدلات من المستخدم و عرض البيانات له. مثال لها نموذج frmChatServer .
طبقة التطبيق Application و هو مسئول عن قيود ومنطقيات البرنامج Business Rules
وهو عادة الحلقة الرئيسية التي تربط بين مكونات البرنامج، و يمثلها في مثالنا هذا وحدة : uAppManager .
طبقة الشبكات أو الاتصال، وهي مسئولة عن كل ماله علاقة بالاتصالات في البرنامج وقد تم
التعبير عنها في الوحدة: uNetManager . ولأنني افترضت احتمال استخدام أكثر من تقنية
في الاتصال أو تغييرها مستقبلا فإن هذه الوحدة تحوي فقط الاستدعاءات العامة الخاصة
بالاتصال، أما التفصيلات الفنية الخاصة بالتعامل مع كل تقنية؛ فيتم تفويضها لوحدات خاصة
بها، و في مثالنا هذا ستكون الوحدة: uNet_INDY مختصة باستخدام مكونات Indy بينما
الوحدة: uNet_Socket تختص باستخدام مكونات Internet التي تأتي مع دلفي. ومع كل تقنية
إضافية أو باقة أخرى من مكونات الاتصال يفرد لها وحدة خاصة بها.
لم أتطرق لقواعد البيانات في هذا المثال، ولكن تنفيذها سيكون على نفس منوال طبقة الاتصال.
**** أن يكون هذا واضحا لشرح الفكرة.
shagrouni
29-01-2010, 02:39 AM
عفوا، المرفق السابق بصيغة zip ، فقط غير اسم امتداد الملف.
AL-MOB4RM3G
29-01-2010, 08:22 PM
طيب جميل اخي الشقروني, اطلعت على المثآل الذي ارفقته, وأظن انني في الطريق الصحيح,
في الحقيقة اوآجه صعوبة (عآمة وليس فقط في هذا المشورع) من فهم افكآر الآخرين :unsure:, ربما لقلّة خبرتي والله اعلم, + انني لست معتاد على التنظيم, ففي مشروعاتي كلها يكون ال buttons على شكل Button 1,2,3,,, , و الى آخره,
امّا بخصوص سؤآلي عن النظام اخي o15s19 فهو بسبب ال encoding لملفّات ال Pas, لذلك لا استطيع ان ارى الأحرف العربيّة بها, ان كنت تعمل على ويندوز 7 فهي سهلة التصليح,
بالتوفيق,
o15s19
31-01-2010, 08:39 AM
السلام عليكم
التغيرات الحاصلة على البرنامج بتاريخ 31-1-2010
+تم تحويل السفر بكامله ليصبح 100% معتمدا على الطبقات(ألف شكر لأخي خالد)
+تم توسيع خيارات السرفر و أصبح بالأمكان ربط السرفر بأي بي معين
+تم دعم نظام الكشف التلقائي (أصبح يعمل الأن من ناحية السرفر)
+وضع ألية لكشف الأي بيات تلقائيا و كشف اسم الجهاز ليستخدم كاسم للسرفر
+القليل من التحسينات المرئية
قائمة الامور الواجب عملها أولا
1)دعم الكلاينت ليستخدم الأي بي المكتشف من نظام الكشف التلقائي
2)وضع نظام لحفظ الإعدادات لكلا السرفر و الكلاينت
3)تجهيز قاعدة البيانات
سلامي
o15s19
31-01-2010, 08:40 AM
امّا بخصوص سؤآلي عن النظام اخي o15s19 فهو بسبب ال encoding لملفّات ال Pas, لذلك لا استطيع ان ارى الأحرف العربيّة بها, ان كنت تعمل على ويندوز 7 فهي سهلة التصليح,
بالتوفيق,
نعم أخي أعمل على نظام 7 و أضع Non unicode العربية
AL-MOB4RM3G
31-01-2010, 02:43 PM
نعم أخي أعمل على نظام 7 و أضع Non unicode العربية
تعديل / حذف المشاركة
طيب اخي الكريم جميل,
الملفات التي بها عربيّة الآن, هي,
من جهة السرفر, fCreateData
ومن جهة الكلينت, uSearchServer
بخصوص الحلّ لمكشلة ال Encoding لملفات ال Pas يمكن عمل الآتي,
افتح الملف fCreateData بالمفكّرة, يعني Notepad, ثم من File وبعدها Save as... تظهر مربع حفظ الملف, في الأسفل هناك خيار, اسمه, Encoding او شئ من هذا, يكون عآدة على Ansi, بدل من Ansi ضعه على UTF-8 , وقم بعدها بحفظ الملف بنفس الإسم طبعا,
هذا كل شئ, ان شاء الله الأمر وآضح, ؟
بعدها قم بإرفآق المشروع بارك الله لك, حتى اتمكن من العمل عليه, وآسف على الغلبة, :oops:
بالتوفيق اخي الكريم,
AL-MOB4RM3G
02-02-2010, 05:33 PM
اخوآني لدي سؤآل يصب في نفس الموضوع(برنامج محادثة),
كتبت هذا في احد الموآضيع,
طيب اخوآني الكرام,
فيما يخص عدة سرفرات, آليّة الوصل بينهم كيف تسير ؟
وأقصد هنا ليس عدة سرفرات على اجهزة مختلفة, وإنما عدة سرفرات في برنامج وجهاز وآحد,
بالتحديد شئ من هذا هي فكرتي,
انشآء فورمس عند الضغط على بوتون؟ (http://delphi4arab.com/forum/showthread.php?t=2462)
يعني يتم مثلا انشاء سرفر لكل غرفة شات, فيصبح التعامل مع الغرفة اسهل,
في حآلة الكلينت, يتم الإتصال بالبرنامج الرئيسي يعني السرفر الرئيسي وبعدها يحدد اي غرفة يود الدخول اليها, فيتم توجيهه الى سرفر الغرفة الذي يودها, ان شاء الله الفكرة وآضحة ؟
وهنا السؤآل نفسه, آلية الوصل بين السرفرات كيف تسير, علما انني حآولت بشئ من هذا لكن اكتشفت انه لا يمكن تشغيل اكثر من سرفر (idtcpserver) على نفس البورت, بعد البحث, وجدت مكون ال tidmappedporttcp لا ادري ان كان يفيد في هذه الحآلة,
بارك الله لكم,
يعني بختصار, كيف يمكن فصل ال Client ثم وصله بسرفر آخر عن طريق السرفر الأول,؟
o15s19
04-02-2010, 11:39 PM
السلام عليكم
التغيرات الحاصلة على D4A Chat بتاريخ 5-2-2010
+إعادة بناء الكلاينت كاملا على مبدأ ال Layers (ألف شكر لأاخي خالد)
+وضع ألية لاكتشاف الأي بيات تلقائيا تمهيدا لاستخدامها بالبحث عن السرفر
+تحسين عملية الكشف عن السرفر (بحاجة للمزيد من العمل ليصبح كاملا)
+تحويل نافذة Serverlist إلى لوحة لإعداد الاتصال مع خيارات ضبط المنفذ و الأي بي
+وضع ألية للتحقق من حالة السرفر قبل المباشرة بعملية التسجيل أو الدخول للبرنامج
+البدأ بعمل واجهة للإعدادات للكلاينت تمهيدا لحفظ إعدادات الكلاينت و السرفر
+تحسين واجهة السرفر مع عملية إتاحة ربط السرفر حتى 4 أيبيات على الجهاز
*القليل من الإصلاحات
قائمة العمل
+انهاء و إكمال عملية الكشف التلقائي(بقي القليل)
+حفظ الإعدادات(تم الاستعداد له)
+العمل على قاعدة البيانات
سلامي
o15s19
04-02-2010, 11:49 PM
لمحة عن النظام المتبع بالكشف التلقائي بين الكلاينت و السرفر
الأساس و الأعتماد في هذا النظام على ال UDP Protocol و خصوصا خاصية ال BroadCasting
تتم العملية بالشكل التالي
بالسرفر هناك UDPServer يقوم باستقبال الطلبات من الكلاينتس على منفذ محدد(المستخدم بالبرنامج هو 5050)
في الكلاينت هناك UDPClient يقوم بارسال BroadCasting Message عبر الشبكة عبر منفذمعين(هو 5050 في البرنامج) و هناك Timer يقوم بمحاولة استقبال المعلومات بحال توفرها على منفذ أخر هو (5051)
و العملية كالتالي
يقوم الكلاينت باسال رسالة عبر الأي بيات الموجودة لديه على المنفذ 5050 و بنفس الوقت يبدأ تايمر بمحاولة استقبال أية معلومات على منفذ 5051 . و عندها يقوم السرفر الموجود على نفس الشبكة باستقبال الرسالة و يقوم بالتحقق منها و عند الموافقة يقوم بارسال رسالة أيضا عبر ال BroadCasting و لكن هنا لأي بي معين هو أي بي الكلاينت المرسل للرسالة و يضع في هذه الرسالة اسم السرفر و عنوانه و حالته و ترسل هذه الرسالة على المنفذ 5051 .
عندها يستقبل الكلاينت الرسالة و يتحقق منها و يقوم بإما ادخال السرفر للقائمة التي لديه أو يتحقق من حالته تمهيدا لعملية تسجيل مستخدم جديد أو عملية تسجيل الدخول كمستخدم موجود مسبقا.
اتمنى أن تكون الفكرة واضحة
سلامي
o15s19
05-02-2010, 11:20 AM
السلام عليكم
هذه ملفات المشروع الحاوية على كتابات بالعربي محفوظة بصيغة utf-8
سلامي
AL-MOB4RM3G
07-02-2010, 07:13 PM
هذه ملفات المشروع الحاوية على كتابات بالعربي محفوظة بصيغة utf-8
جميل جدا اخي الكريم, بارك الله فيك وعذرا على الغلبة, لكن الآن ان شاء الله سترآني كالأسد في المشروع :woot:
وفيما يخص الموضوع نفسه, بالنسبة لتحويل الصيغة للسورس, فطريقتي كانت معقّدة, لم اكن اعلم انه هناك اسهل منها بكثير, عموما, اشكر الأخ كاش واحد فهو من دلّ على هذه الطريقة,
مقتبس من الأخ كاش واحد,
عموما يمكن تغيير صيغة ملف السورس في محرر دلفي 2010، انقر بالزر الأيمن ثم format file...
وهكذا الطريقة اسهل بعشر مرّات,
بارك الله لكم جميعا,
AL-MOB4RM3G
10-02-2010, 05:06 PM
بسم الله,
اخي الكريم o15s19, لنفرض ان المعلومات المرسلة ستكون على شكل type, فهل هذه الطريقة صحيحة ؟
يعني مثلا, عند تسجيل معرّف جديد, ادري كيف تسير الأمور لو استخمت مثلا, writeln لكل معلومة لأرسلها من العميل الى الخالدم, لكن لدي احساس ان هذا خطآ, ولهذا ربما من الأفضل عمل شئ من type او طريقة اخرى ان وجد, على كل حال بحثت عن طريقة الإرسآل, لكن لم اصل الى شئ يذكر لحد الآن, انتظرالتوجيه منك بارك الله لك, :bye1:
moh_ghi2000
22-02-2010, 05:53 PM
الشات ما اشتغل عندي ما السبب يا شباب لا سيرفر ولا كلاينت
AL-MOB4RM3G
22-02-2010, 06:37 PM
الشات ما اشتغل عندي ما السبب يا شباب لا سيرفر ولا كلاينت
لحظة اخي الكريم بارك الله لك, :)
ما هو الذي لم يشتغل معك؟ البرنامج نفسه؟ السورس؟ ام تقصد الإتصال بين الكلينت و السرفر؟
في الغد, او بعد غد سأرفع ان شاء الله نسخة موصولة بقآعدة بيانات, (لدي امتحان غدا)
o15s19
23-03-2010, 02:31 PM
السلام عليكم
التغيرات الحاصلة بتاريخ 23-3-2010
+تم الانتهاء من الكشف التلقائي للسرفر
-القليل من الإصلاحات
o15s19
23-03-2010, 11:25 PM
السلام عليكم
الجديد بتاريخ 24-3-2010
+تجهيز السرفر لاستقبال الكلاينت
+خيار جديد لمعرفة الأجهزة المتصلة بالسرفر
+تم اضافة مكتبة مجانية للحصول على Broadcast address المسخدم في ميزة الكشف التلقائي للسرفر
-مزيد من الإصلاحات بنظام الكلاينت
الأن اصبح الكلاينت قادر على الاتصال بالسرفر و بدوره اصبح السرفر قادر على معرفة الأجهزة المتصلة
سلامي
shagrouni
24-03-2010, 09:44 AM
السلام عليكم،
شكرا على المجهود.
shagrouni
24-03-2010, 10:07 PM
السلام عليكم
مرحبا أخيo15s19
أشكرك على الجهد المبذول في مشروع المحادثة.
لم أستطع تجربة البرنامج (بعض مكونات اندي المستخدمة في المشروع ليست متاحة لدي في دلفي 6) ولكن بالنظر إلى الكود أرى أنك تقوم بعمل مميز.
لي بعض الملاحظات، أتمنى أن يتسع وقتك لها. طبعا الذي يتفرج ينظر بطريقة تختلف عن تلك التي ينظر بها المبرمج الغارقة يداه في العمل، ملاحظاتي تتركز على الناحية التنظيمية لتوليف البرنامج، وتقع في مجال ما يسمى ب، Refactory أي عمليات المراجعة والتنقيح وإعادة الضبط،والتي ينصح أن تتم بشكل دوري وفترات متقاربة:
تغيير إسم الوحدة uNetManager إلى
uServerNetManager أو uNetManager_Server(أعتقد الأخيرة أوضح)
للتفريق مع وحدة بنفس الاسم في برنامج الكلاينت
TServer تغير إلى TVirtualServerProvider
ويكون إسم المتغير من نوعه ServerProvider بدلا من Server
TChatServer تغير إلى ِTAppChatServer
ويكون إسم المتغير AppChatServer بدلا من ChatSever
في نسخة السيرفر يوجد TClient إذا كان المقصود به المتصل الحالي فأرى إعادة تسميته إلى TGuestClient أو TConnectedClient
وهكذا الأمر بالنسبة لنسخة الكلاينت:
uNetManage_Client
TVertualClientProvider بدلا من TClient
TAppChatClient بدلا من TChatClient
AppChatClient بدلا من ChatClient
المتغير Server والمنغير Client في نسخة الكلاينت أرى أن يعاد تسميتهم كالتالي:
ServerProvider و ClientProvider حيث أنهما سيشيران إلى توع التقنية المستخدمة في كل منهما.
أرى وضع المتغير Server أو ServerProvider (إذا تغير اسمه) داخل قسم private في صنفية AppChatServer فهذه الصنفية هي الوحيدة التي تستخدمه والمسئولة عن خلقه واتلافه.
الوحدة uNetManager يجب أن لا تعلم بتفاصيل التقنية المستخدمة في الربط، وبالتالي يجب أن لا تكون هناك أية إشارة لملفات اندي في قسم uses لديها. ويتبع هذا أن الصنفيات في هذه الوحدة يجب أن لا تستخدم مباشرة تقنية اندي أو أية تقنية ربط أخرى، مثلما هو حاصل الآن مع صنفية TClient .
إذا تمت الأمور بهذا الشكل يمكنني عندها أن أعزل الملف uNet_INDY الذي لا أملك مكوناته واستخدم أو أبرمج تقنية أخرى للربط.
أيضا الوحدة uNetManager يجب أن لا تخاطب مباشرة الوحدة uAppManager ، ويجب أن لا تعلم عنها شيئا. قهي مثل العبد الأعمى ينفذ الأمر و لا يعلم من يأمره. (افترض أن هناك برنامج آخر لمبرمج آخر وبريد أن يستفيد من خدمات هذه الوحدة.)
نفس الكلام ينطبق على الوحدة uAppManager ، فهي تستخدم مباشرة أوامر خاصة باندي وتتخطى الوحدة uNetManager التي يفترض أن تكون المسئول الوحيد عن أمور الربط والاتصال. كما أنها تخاطب مباشرة الشاشة الرئيسية في وحدة D4A_Serverfrm.
الوحدات uNet_Broad و uMisc باعتبارهما خاصتان باندي هل يمكن ضمهما إلى وحدة uNet_INDY.
طبعا نفس المبادئ السابقة تعمم على باقي الجوانب كقواعد البيانات.
سؤال: هل يمكن رفع مستوى التنظيم (أو التعقيد!) بجعل أوامر وحدة uNetManager ضمن صنفية نسميها TNetManager_Server
أخيرا، المبرمج هو صاحب الكلمة العليا، لتنفيذ ما يراه مناسب في الوقت الذي يراه مناسب.
وتقديري مرة أخرى.
AL-MOB4RM3G
07-04-2010, 08:55 AM
السلام عليكم,
اولا, اعتذر وبشدة عن عدم مشآركتي في هذا الموضوع لفترة ليست بالقصيرة, لكن لظروف والله المستعان,
ثآنيا احيّي الأخ o15s19 و الأخ الشقروني كثيرا على المثآبرة, و التقدم في المشروع, فجزآكم الله كل خير,
بالنسبة لقآعدة البيانات للسرفر, عملت مثآل وضعته هنا (http://delphi4arab.com/forum/showthread.php?t=2866), يمكن ان نستفيد منه في هذا المشورع :)
ولتكن هذه مشآركة بسيطة منّي على الأقل, وعلى كل حال, فأظن انني يمكنني الآن ان اصمم قآعدة بيانات لهذا المشورع, انتظروني مسآء ان شاء الله,
بالمنآسبة, ذكر الأخ عبد العزيز في مشآركة سآبقة,
بعض الجداول الخاصة بالعضو يمكن وضعها بClient لتقليل الضغط على Server
هل هناك مثآل عن ما هي المعلومات التي يجب او يفضّل ان تخزّن عند ال كلينت ؟
بالتوفيق اخوآني,
AL-MOB4RM3G
07-04-2010, 08:54 PM
السلام عليكم من جديد,
كبدآية, تم انشآء القآعدة وتم انشآء جدول اسمه UsersTable, بدآخله تم انشآء عدة Columns لتلبية معلومات التسجيل لمعرف جديد او لمستخدم جديد,
طبعا نوع ال Columns حسب الحآجة, فهناك integer و هناك Text وهناك Date وهناك ايضى image ليتم تخزين الصورة الشخصيّة فيه,
امّا بالنسبة لعملية التسجيل, يعني ال Register process فلا اعلم كيف يكون,
اتذكر الملف الذي ارسلته لي مرة اخي الكريم o15s19 عن كيفية عميلّة التسجيل, لكن لم اعرف في الحقيقة كيف استخدمه,
بإنتظآركم جزاكم الله خيرا,
o15s19
12-04-2010, 02:32 PM
السلام عليكم
أسف لغيابي و لتأخري بالرد بسبب المشاكل و الامتحانات
المهم قمت بإعادة تنسيق السرفر وفقا لمقترحات أخي خاالد و أتمنى دائما أن يقدم لنا المزيد من هذه المقترحات و لكن لفت انتباهي شئ معين
أيضا الوحدة uNetManager يجب أن لا تخاطب مباشرة الوحدة uAppManager ، ويجب أن لا تعلم عنها شيئا. قهي مثل العبد الأعمى ينفذ الأمر و لا يعلم من يأمره. (افترض أن هناك برنامج آخر لمبرمج آخر وبريد أن يستفيد من خدمات هذه الوحدة.)
نفس الكلام ينطبق على الوحدة uAppManager ، فهي تستخدم مباشرة أوامر خاصة باندي وتتخطى الوحدة uNetManager التي يفترض أن تكون المسئول الوحيد عن أمور الربط والاتصال. كما أنها تخاطب مباشرة الشاشة الرئيسية في وحدة D4A_Serverfrm.
إذا فرضنا أننا قمنا بهذا العمل و قام كلاينت بإرسال معلومة للسرفر و يريد السرفر عرضها و نحن لا نعلم وقت وصول المعلومة و الذي يعلم هو فقط uNet_INDY فما هي الطريقة التي سنظهر بها هذه المعلومة دون إعلام بقية الوحدات بوصول هذه المعلومة(اتمنى التوضيح و لو بكود بسيط)
كبدآية, تم انشآء القآعدة وتم انشآء جدول اسمه UsersTable, بدآخله تم انشآء عدة Columns لتلبية معلومات التسجيل لمعرف جديد او لمستخدم جديد,
أولا الحمد لله على عودتك. و كيف الأخبار عند أخي الكريم
اطلعت على الكود فلم اجدك قد غيرت بنظام قاعدة البيانات فلا اعلم هل هناك مشكلة أم ماذا و كيف قمت بإدخال الجدول ؟؟ هل قمت بعمل ذلك خارجيا أم ماذا ؟؟
التغيرات الحاصة بتاريخ 12-4-2010
-إعادة تنظيم بعض الوحدات بالسرفر
-التعامل مع قاعدة البيانات بواسطة ال API
سلامي
shagrouni
12-04-2010, 06:43 PM
السلام عليكم
جاري تنزيل التعديل.
فما هي الطريقة التي سنظهر بها هذه المعلومة
باستخدام Callback fuction
سأحاول إيراد مثال، ولكن لا أعدك اليوم. حاول معها أخي.
بالتوفيق
shagrouni
13-04-2010, 01:27 AM
السلام عليكم
مرفق تعديل لقسم السيرفر .
o15s19
13-04-2010, 04:58 AM
السلام عليكم
مرفق تعديل لقسم السيرفر .
جميل جدا رائع
ألف شكر لك أخي الكريم و اتمنى دائما أن تزودنا بهذه الملاحظات القيمة
كما قمت بقراءة عملية ال CallBack و بالمرفقات ملف PDF لأحد المواقع يشرح بها هذه العملية (EN)
جاري العمل و التعديل..........
AL-MOB4RM3G
14-04-2010, 09:50 AM
هل قمت بعمل ذلك خارجيا أم ماذا ؟؟
نعم صحيح, قمت بذلك خآرجيا,
لكن لم اصل الى ابعد من ذلك, لآنه عند ادخآل المعلومات لقآعدة البيانات يجب ان ترسل المعلومات اولا,
في المرفقات الملف الذي ارسلته لي مرة اخي الكريم,
حاولت مع عمل تجرة, او بالحقيقة تجآريب, لكن لم اصل الى شئ يذكر,
بارك الله لكم,
o15s19
20-04-2010, 01:59 PM
السلام عليكم
التغيرات الحاصلة بتاريخ 20-4-2010
*تم تحديث نظام الاتصال الخاص بالسرفر و أصبح جاهزا لعملية دخول و تسجيل الكلاينت
*الكثير من الترتيب بالمشروع لكلا السرفر و الكلاينت
+إضافة قائمة لحفظ الاتصلات الجديدة القادمة للسرفر
قائمة المهام
1) تجهيز الكلاينت و ترتبه و تنسيقه
2)البدء بقاعدة البيانات
o15s19
20-04-2010, 05:10 PM
السلام عليكم
التغيرات الحاصلة بتاريخ 20-4-2010 في الساعة السادسة و خمس دقائق
*تم إعدادة تنسيق الكلاينت كاملا و اصبح مستعد لبدء عملية التسجيل
*تم دمج الوحدة uSearchServer مع الوحدة uNet_Indy باعتبارها تابعة لمكونات الاندي (ألف شكر لأخي خالد)
قائمة المهام
1)بناء قاعدة البيانات
2)اتصال الكلاينت بالسرفر و تسجيل الكلاينت
By o15s19
o15s19
20-04-2010, 07:06 PM
السلام عليكم
التغيرات الحاصلة بتاريخ 20-4-2010 الساعة الثامنة
+تم بناء واجهة لإعدادات السرفر و وضع خيارين لإقلاع السلرفر تلقائيا و لفتح قاعدة البيانات تلقائيا
+عند انشاء قاعدة بيانات جديدة يتم وضع الجدول الافتراضي بها.
*إصلاح خطأ عند إغلاق قاعدة البيانات
قائمة المهام
1)اكمال قاعدة البيانات من حيث ادخال و إخراج المعلومات
2)اتصال الكلاينت بالسرفر و تسجيل الكلاينت
By o15s19
o15s19
22-04-2010, 12:05 AM
السلام عليكم
التغيرات الحاصلة بتاريخ 22-4-2010
+إضافة Thread للكلاينت ليستطيع تلقي الرسائل من السرفر
+إضافة تعليمات ليستطيع بها الكلاينت ارسال الرسائل للسرفر
+إضافة تعليمات ليستطيع السرفر تلقي رسائل الكلاينت
+إضافة تعليمات لإدخال المعلومات إلى قاعدة البيانات
+وضع ألية للتحقق من اسم المستخدم المدخل من قبل الكلاينت
+إعادة تصميم واجهة تسجيل المستخدم (تم حذف مكان الصورة و لكن سيتم وضعها في اللوحة الأساسية في الكلاينت ليقوم المستخدم بتغيرها فيما بعد)
*إصلاح Bug في نظام فتح قاعدة البيانات
*توسيع عملية فتح قاعدة البيانات تلقائيا (يتم الان التحقق من وجود الملف قبل فتحه بعملية الفتح التلقائي)
الأن اصبح السرفر يتحقق من اسم المستخدم الخاص بالكلاينت و عند عدم وجوده يظهر لون أخضر يشير إلى إمكانية التسجيل بهذا الاسم بهذه العملية يقوم الكلاينت بإرسال رسالة للسرفر معلما إياه بالاسم المراد التسجيل به و يقوم السرفر بالبحث في قاعدة بياناته عن هذا الاسم و بحال عدم وجوده يقوم السرفر بإرسال رسالة للكلاينت معلما إياه بأن هذا الاسم متاح و عندها يستقبل الكلاينت الرسالة و يقوم بتحويلها ل Boolean و يظهر لون حسب هذا ال Boolean
قائمة المهام
1)انهاء عملية تسجيل الكلاينت (بقي القليل)
2)بناء عملية تسجيل الدخول و بناء واجهة الدخول الخاصة بالكلاينت
By o15s19
AL-MOB4RM3G
22-04-2010, 10:52 AM
السلام عليكم ورحمة الله
اخي الكريم o15s19 الله يبارك فيكم وىرفع قدركم
في الحقيقىة اعلم انني لم اقدم شئ للمشروع هذا الا انني اتابعه و احاول ان ابني مشروع بجانب هذا المشروع بيدي كي استفيد منه
طبعا شتان بين الذي تكتبه انت والذي اكتبه انا الا انني استفيد من الاكواد و الفكرة وهناك امور كثيرة لا افهمها الا انني احاول فهمها والله المستعان
تابع اخي الكريم بارك الله لك وجزاك الله كل خير وبارك الله بالاخ الشقروني وجميع الإخوة والسلام عليكم ورحمة الله
o15s19
27-04-2010, 12:42 AM
السلام عليكم
التغيرات الحاصلة بتاريخ 27-4-2010
+تم الانتهاء من عملية تسجيل الكلاينت
+تصحيح بعض ال Bugs في نظام قاعدة البيانات
+تصحيح بعض الأمور اثناء عملية التسجيل
By o15s19
khiro.alg
30-04-2010, 10:13 PM
السلام عليكم
إخوان للأسف الشديد لا يمكنني مجاراتكم ومساعدتكم في العمل لمستواي الضعيف
لكن لي بعض النصائح أو الإقتراحات أرجـوا أن تستفيدوا منها:
-جعل البرنامج متعدد اللغات لأنه هناك مشكل في العربية - ويمكن جعل العربية على شكل صور .
-شرح السورس في كل الخطوات ليستطيع كل من يدخل أن يفهم البرنامج وقد يساعدكم في إتمامه.
-جعل قاعدة البيانات في سيرفر في النت - كموقع أو أي شيء - ليست لي دراية بهذه الأمور.
......
بالتوفيق إن شاء الله
AvimimuS
01-05-2010, 11:59 PM
ويمكن جعل العربية على شكل صور .
الصور ستزيد من حجم البرنامج كثيرا :cryss:
يمكن جعله في حالة ماذا اختار المستخدم اللغة العربية يقوم البرنامج بعملية فحص اذا كانت اللغة العربية
مثبة املا في حالة لم تكن مثبتة يقوم بتثبيتها تلقائيا ....
بالتوفيق للجميع ....
alkayal
16-06-2010, 11:22 PM
اشكر كل من ساهم في هذا المشروع الرائع وفكرة انشاء مشروع من خلال المنتدى تعتبر فكره ناجحه في وجود التفاهم والمتابعة وان شالله يستمر عمل مثل هذه المشاريع حتى لوكانت بسيطه لتعم الفائده للجميع وتقبلوا تحياتي
بولفعة
05-09-2010, 08:39 AM
السلام عليكم اخواني الكرام
1 عندي اقتراح بالنسبة لقاعدة المعطيات أنا أفضل الاكسس وخاصة أن قواعد المعطيات ليست كبيرة
2 افضل أن يكون هناك تبادل الصوت لان مثل هذه البرامج كثيرة وسهلة البرمجة أقصد تبادل الرسائل فقط
ما رأيكم لو نكمل المشروع باضافة الصوت له أي تبادل الصوت
أنا مستعد
vBulletin® v3.8.6, Copyright ©2000-2010, TranZ by Almuhajir