delphi4arab منتديات دلفي للعرب
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;
  AContext.Data := UserInfo; 

و فى الحدث 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 ??