01-05-2023, 12:46 AM
السلام عليكم
بالنسبة للمكون IdTCPServer indy
فى الحدث
connect
disconnect
execute
نجد parametre واحد وهو AContext: TIdContext
كل client اتصل او يلغى الاتصال او يرسل شىء ما له AContext خاص به .
الشىء الدى حيرنى مثلا ادا اسندنا مثلا TObject ل AContext.Data فى الحدث Onconnect
نستطيع الوصول TObject من الحدث On execute
مثلا
و فى الحدث OnConnect
و فى الحدث OnExecute نستطيع الوصول ل TObject الخاص بهدا الاتصال
الشىء الدى لم افهمه مثلا لو اردنا تخزين عنوان AContext فى الحدث Oncennect و Ondisconnect يكون نفس العنوان اما فى الحدث OnExecute يكون عنوان اخر
و دائما يبعد ب 80 بايت عن العنوان المخزن فى الحدث connect/disconnect
مثلا فى الحدث connect/disconnect
هو نفس العنوان فى الحدث OnExecute بدون اصافة 80 بايت
هل دائما عنوان AContext بالنسبة للحدث connect/disconnect يبعد ب 80 بايت عن عنوانه فى الحدث OnExecute ??
بالنسبة للمكون 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 ??

