delphi4arab منتديات دلفي للعرب
خلل في Server سوكت في دلفي 2009 ؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : خلل في Server سوكت في دلفي 2009 ؟ (/showthread.php?tid=1080)



خلل في Server سوكت في دلفي 2009 ؟ - AL-MOB4RM3G - 27-07-2009

السلام عليكم

اخواني الكرام هناك خلل في السوكت في دلفي 2009 والله اعلم؟؟؟

انظروا الصورة اسفل,,

هذا يحدث مع الدلفي 2009 وليس دلفي 7؟

[صورة: cserror.jpg]

ما الخلل بارك الله لكم؟

علماً انني استخدم clientsocket و serversocket

جزآكم الله خيرا,,, والسلام عليكم ورحمة الله


خلل في Server سوكت في دلفي 2009 ؟ - AL-MOB4RM3G - 27-07-2009

عذرا اخوآني نسيت ارفآق الملفّين,,

لو يدمجهما المشرف في المشآركة السآبقة بارك الله له,,


خلل في Server سوكت في دلفي 2009 ؟ - kachwahed - 27-07-2009

وعليكم السلام ورحمة الله
لا يوجد خلل أخي، كل ما في الأمر أن Delphi2009 يدعم Unicode، أي أن كل حرف يأخذ 2byte عوضا عما كان عليه في السابق كل حرف 1byte.
وبالتالي يجب عمل تحديث بعض الأكواد المكتوبة في النسخ السابقة للدلفي، وفي حالتك يجب تحويل النص قبل قراءته.

لاحظ في هذه الحالة، مثلا الدالة ReceiveText تطلب متغير AnsiString بينما كانت في السابق تطلب متغير String عاد.

في حالتك استخدام ReceiveBuf أولى من ReceiveText ...

أنصحك باستخدام مكونات Indy ICS وابتعد عن Stocket.

الحل: غير في الحدث OnClientRead كما يلي:
PHP كود :
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  
Socket: TCustomWinSocket);
var 
s: AnsiString;
begin
SetLength
(s, Socket.ReceiveLength);
SetLength(s, Socket.ReceiveBuf(Pointer(s)^, Length(s)));
memo1.Lines.Add(String(s));
end; 
بالتوفيق.



خلل في Server سوكت في دلفي 2009 ؟ - AL-MOB4RM3G - 27-07-2009

شكرا لك اخي الكريم,,

اولا,, اخي لو استخدمت طريقة التحويل فهذه تنفع في حآلة الكتآبة بلأحرب الآتنيّة,,

ولكن في العربيّة تصير الأحرب ؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟ علآمات سؤآل والله المستعان

البرنامج الذي اود ان ابرمجه سيدعم العربيّة و الإنجليزّة معا,,

,,,,,

بالنسبة لمكونات ال Indy ,,, هل تدعم العربية ؟

+

هل هي سهلة الإستخدآم ك سوكت ؟؟؟

,,,

مشكلة مكونات indy ليس لديها تمآرين او tutorials كما لل Socket ؟

بارك الله لكم


خلل في Server سوكت في دلفي 2009 ؟ - kachwahed - 27-07-2009

هل جربت ما كتبته لك؟
[صورة: 2igot34.jpg]

مكونات Indy أفضل ولا شك، خاصة أن CodeGear لم تعد تطور Socket
لا تبحث عن الصعوبة أو السهولة، فعندما تتعلمها ستغدو سهلة Wink

تعلمها بنفسك وستضع أنت Tutorials تشرحها فيه.
هناك موضوع في منتدى الفريق العربي للبرمجة للـ Indy.

مثالك في المرفقات مكتوب على Delphi 2010
بالتوفيق.



خلل في Server سوكت في دلفي 2009 ؟ - AL-MOB4RM3G - 29-07-2009

إقتباس :هل جربت ما كتبته لك؟

نعم اخي جربت ذلك وكما قلت لك في المشآركة السآبقة,,, تدعم الأحرف الآتينيّة فقط,,

نفعت الطريقة معك اخي لأن جهآزك فيه الغة العربيّة,,, ولكن ماذا سيحدث لو حذفت العربية كما هو الحآل معي ؟

لن تصل الكلمة الى السيرفر بلعربية,, بل سيظهر علامآت سؤآل,, وهذا يدل على ان الكلمة لم تصل بحآلة اليونيكود,,

مشكلتي هي,, كيف ممكن ارسل نصوص يونيكود صحيحة الى الخآدم ؟ حتى تظهر النصوص بشكل اليونيكود,, يعني بختصآر,, حتى يظهر العربية حتى ولو لم يكن العربية في الجهآز,,

وآضح ؟ Smile

يعني دعني اعطيك مثآل,,

برنامج البآلتولك مثلا,, هل استخدمته ؟
من ليس لديه العربية في الجهآز لا يمكن قرآئة ما يكتب بدآخله,,

طيب على عكسه,, برنامج المآسنجر وكذلك السكيبي,,
حتى ولو لم يكن لديك العربية,, يمكنك الكتآبة و القرآئة بالغة العربية,,
وهذا ما اود فعله, وسأفعل بئذن الله Cool

اشكرك مجددا اخي الكريم


خلل في Server سوكت في دلفي 2009 ؟ - o15s19 - 31-07-2009

AL-MOB4RM3G كتب :شكرا لك اخي الكريم,,


بالنسبة لمكونات ال Indy ,,, هل تدعم العربية ؟


بالنسبة لمشكلة العربي و التعامل ب indy ضع الأوامر بالشكل التالي
للاستقبال
كود :
Connection.IOHandler.ReadLn('',enUTF8)

للارسال (حيث Msg هي الرسالة)
كود :
Connection.IOHandler.WriteLn(Msg,enUTF8)


طبعا الفكرة هي في enUTF8 و تحتاج للمكون idglobal
لكني لم اجرب هذه الطريقة مع نظام لا يدعم اللغة العربية
جربها و أخبرني بالنتائج و لك جزيل الشكر