![]() |
|
IdTCPServer connect/disconnect/Execute(AContext: TIdContext) - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : IdTCPServer connect/disconnect/Execute(AContext: TIdContext) (/showthread.php?tid=12290) |
IdTCPServer connect/disconnect/Execute(AContext: TIdContext) - haniid - 01-05-2023 السلام عليكم بالنسبة للمكون IdTCPServer indy فى الحدث connect disconnect execute نجد parametre واحد وهو AContext: TIdContext كل client اتصل او يلغى الاتصال او يرسل شىء ما له AContext خاص به . الشىء الدى حيرنى مثلا ادا اسندنا مثلا TObject ل AContext.Data فى الحدث Onconnect نستطيع الوصول TObject من الحدث On execute مثلا كود : TUserInfo = class(TObject)
public
PAContext : string;
UserType : string;و فى الحدث OnConnect PHP كود : UserInfo := TUserInfo.Create;و فى الحدث OnExecute نستطيع الوصول ل TObject الخاص بهدا الاتصال PHP كود : TUserInfo(AContext.Data).PAContext الشىء الدى لم افهمه مثلا لو اردنا تخزين عنوان AContext فى الحدث Oncennect و Ondisconnect يكون نفس العنوان اما فى الحدث OnExecute يكون عنوان اخر و دائما يبعد ب 80 بايت عن العنوان المخزن فى الحدث connect/disconnect مثلا فى الحدث connect/disconnect PHP كود : Memo1.Lines.Add(IntToHex(Int64(Pointer(@AContext)) + 80, 16)); هو نفس العنوان فى الحدث OnExecute بدون اصافة 80 بايت PHP كود : IntToHex(Int64(Pointer(@AContext)), 16) هل دائما عنوان AContext بالنسبة للحدث connect/disconnect يبعد ب 80 بايت عن عنوانه فى الحدث OnExecute ?? |