o15s19 كتب :على فكرة انظر بالصفحة السابقة بأول رد لي على مشاركتك و ستلاحظ أنك وصلت للكود الذي وضعته و لكن وصولك هذا افضل لانك الان على ما اظن فهمت فكرة الاتصال و الارسال بين السرفر و الكلاينت في بروتوكول tcp
و حتى فكرة التايمر تجد أني أشرت لها
فهل هنا بعد مشكلة أم انحل كل الأمر و اصبحت ترسل بين الكلاينت و السرفر بدوون مشاكل و باللغة العربية؟؟؟؟
اهلا استآذي الحبيب,, :laugh:
نعم, تم حل المشاكل الأسآسيّة ولكن ليس كل المشآكل والله اعلم,
بالنسبة للعربية,, لم اعمل عليها ولكن غدا ان شاء الله سأحآول ان اكمل المشروع بعض الشئ
وأدخل التآيمر في المشروع + انني سأحآول ان شاء الله ان احل مشكلة العربيّة حتى لا يظهر على شكل ؟؟؟؟؟؟؟
على كل حال,, هذا للغد ان شاء الله,
فإن كان هناك ايّة سؤآل فسأضعه هنا ان شاء الله,,
اشكرك من كل قلبي اخي الحبيب, وأسئل الله ان ييسر امرنا و أمركم
والسلام عليكم ورحمة الله
AL-MOB4RM3G كتب :اهلا استآذي الحبيب,, :laugh:
وأدخل التآيمر في المشروع + انني سأحآول ان شاء الله ان احل مشكلة العربيّة حتى لا يظهر على شكل ؟؟؟؟؟؟؟
الحمد لله على حل المشاكل
الأن حاول حل هذه المشاكل
أولا الاستغناء عن التايمر و استخدام thread (لانه افضل من التايمر و من اجل لا يعمل البرنامج Hang عند الاستقبال)
ثانيا العربية كاملة اقصد الجمل و و الكلمات مع دمج عربي و انكليزي
و عند الانتهاء من هذه المشاكل ننتقل للخطوة التالية التي سأخبرك إياها في الوقت المناسب و انا جاهز لأي مشكلة
و السلام عليكم
طيب حسنن اخي الكريم,,
اظن اني سأبدئ مع هذه, لآنّها تبدوا هي الأسهل ؟
إقتباس :ثانيا العربية كاملة اقصد الجمل و و الكلمات مع دمج عربي و انكليزي
اولا, ما الفرق بين الموآضع التي وضعت بها AnsiString و الموآضع التي بها enUTF8 ؟؟
ثانيا,, مثلا بعد الكود:
PHP كود :
ReadLn(edit1.text , enUTF8)
لماذا يحدث خلل هنا ؟
هل يجب تعريفه بطريقة من الطرق ؟
إقتباس :[DCC Error] Qserver.pas(163): E2003 Undeclared identifier: 'enUTF8'
والسلام عليكم ورحمة الله
تعريف enUTF8 هو بوضع idglobal في قائمة Uses
جرب كل واحدة على حدى و خبرني شو بصير معك
يعني جرب مرة ارسل String بدون enUTF8 ك String عادية
و جرب ارسلها ك AnsiStrig
و جرب ارسلها ك String مع enUTF8
و جرب ارسلها ك AnsiString مع enUTF8
نعم اخي الكريم,,
جربت هذا ,, و النتيجة,,
enUTF8 تدعم العربيّة بدون مشآكل والله الحمد,
Ansi String لا تدعم العربية ؟ لأن احرف عجيبة غريبة ظهرت بدل من علمآت السؤآل ,,,
ملآحظة,, الآن البرنآمج يرسل نصوص و شغآل تمام مع العربيّة ولكنني لم استخدم AnsiString في المشروع من الأصل,,
على كل حال,, عندما وضعت enUTF8 التي معرفة في IdGlobal كما ذكرت لي اخي الكريم مشي الحآل و كان البرنآمج يكتب بالعربيّة,, لكن في الشريط كتب لي ان استخدم
فستخدمتها ,, واظنها هي تعمل نفس الغرض ؟ لآن العربية كانت تمام ايضى,,,
-----------
الخطوة التآلية الآن هي,,
إقتباس :الاستغناء عن التايمر و استخدام thread (لانه افضل من التايمر و من اجل لا يعمل البرنامج Hang عند الاستقبال)
هذا النقطة قت شرحتها انت في اول مشآركة, سأحآول بها الآن ان شاء الله
بارك الله لك ونفع بك,,
والسلام عليكم ورحمة الله
نعم اخي الكريم,
للأسف لم تنجح معي المحآولة,,
وقد حآولت طول اليوم,
عموما ارسلت لك على الخآص السورس اخي الحبيب,
فإن كان لديك وقت, فلا بئس ان تلقي نظرة,
اشكرك مجددا
والسلام عليكم ورحمة الله
نعم السلام عليكم من جديد,,
اخوآني الكرام, هذا ما قمت به مع الكلينت,,
اولا وضعت هذه الأكوآد بعد قسم ايوسيس
PHP كود :
type
TReadResponse= class(TThread)
protected
FConn: TIdTCPConnection;
procedure Execute; override;
public
constructor Create(AConn: TIdTCPConnection); reintroduce;
end;
TWriteResponse = class(TIdSync)
protected
Atext: AnsiString;
procedure DoSynchronize; override;
public
constructor Create(const AResponse: AnsiString);
class procedure AddResponse(const AResponse: AnsiString);
end;
وتحت قسم implementation وضعت الأكوآد التآلية,,
PHP كود :
constructor TReadResponse.Create(AConn: TIdTCPConnection);
begin
FConn := AConn;
inherited Create(False);
end;
procedure TReadResponse.Execute;
begin
while not Terminated and FConn.Connected do
begin
TWriteResponse.AddResponse(FConn.IOHandler.ReadLn('',TIdTextEncoding.UTF8));
end;
end;
constructor TWriteResponse.Create(const AResponse: AnsiString);
begin
AText := AResponse;
inherited Create;
end;
class procedure TWriteResponse.AddResponse (const AResponse: AnsiString);
begin
with Create(AResponse) do try
Synchronize;
finally
Free;
end;
end;
procedure TWriteResponse.DoSynchronize;
begin
//ShowMessage(AText);
//form1.richedit1.Lines.Add(IdTcpClient1.Socket.ReadLn(TidTextencoding.UTF8));
form1.richedit1.Lines.Add(AText);
end;
وكما هو الوآضح في آخر برسيدور فإنّي اود ان اكتب السترينج الذي يأتي من السيرفر
في ال RichEdit1
PHP كود :
form1.richedit1.Lines.Add(AText);
نعم, هذا ما قمت به,,
هل من خطأ بارك الله بكم ؟ او هل من شئ نآقص في هذه الأكوآد ليتم ما اود عمله؟
علما انه لا يحدث شئ ,, ولا تضهر اية اخطآء عند
تنفيذ البرنآمج,,
بارك الله لكم, والسلام عليكم ورحمة الله
السلام عليكم
عذرا أخي الكريم لأني لم اقم بالرد على رسالتك على الخاص لأني مشغول قليلا بس نظرت للسورس الخاص ببرنامجك كما لفت انتباهي موضوع الكود الذي وضعته بأخر مشاركة و هذه ملاحظاتي (عبارة عن اسئلة بحاجة لاجابة)
1)هل اصبح الكلاينت يتلقى الرسائل بنجاح و بدون تايمر و بالعربي
2)هل الكود يقوم بحمل زاد على معالج الجهاز بمعنى برمجي هل يقوم ب Infinite Loop بالنسبة للكلاينت
3)هل يمكنك الاتصال بالسرفر و البقاء متصلا يعني لا يقوم السرفر بعمل Infinite Loop عندما يتصل الكلاينت بالسرفر و الذي يتظاهر بتعليق السرفر و عدم عمله إلا عندما ينفصل الكلاينت عن السرفر
4)هل فهمت معنى ال Thread في برنامج الكلاينت (كما وظائفه مثلا في bruteForcer )
منتظر اجابتك
نعم اخي الكريم,
بانسبة للأجوبة,,
1. لا, وهنا هي المشكلة رغم انني وضعت الأكوآد الصحيحة والله اعلم,
2. لا, لم الآحظ هذا
3. في الحقيقة لم افهل هذا السؤآل جيدا.
4. نعم فهمت هذا, المعنى هو انه في الكلينت يفتح ثريد خاص بعمليّة التنصط,, يراقب ان كان هناك اية تكست او شئ مرسل من السرفر حتى يستقبله,,
بارك الله لك اخي الكريم, وآسف على اتعآبك معي,
لكن منكم نستفيد اخي الحبيب,,
والسلام عليكم ورحمة الله
نعم اخوآني الكرام,
السلام عليكم من جديد,,
في الحقيقة اخوآني لا ارى اية فرق بين الكود الذي كتبته وبين كود الآخ o15s19 في اول مشآركة,,
بالإضآفة الى ذلك,, هناك هذا الدرس,,
من هنا,,
وفيه ايضى شرح نفس الشئ,, ومع ذلك لم ارى ايّة فرق,,
وهنا ايضى,, وآضحة وضوح الشمس,, ليس هناك اية فرق
هل من فكرة بارك الله فيكم ؟