IdTCPServer connect/disconnect/Execute(AContext: TIdContext)
#1
السلام عليكم 

بالنسبة للمكون 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 ??
الرد


الردود في هذا الموضوع
IdTCPServer connect/disconnect/Execute(AContext: TIdContext) - بواسطة haniid - 01-05-2023, 12:46 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم