PDA

View Full Version : برای تبدیل indy9 به indy10 کمک کنید.



gbg
یک شنبه 07 تیر 1388, 22:51 عصر
سلام
من برنامم رو می خوام در دلفی 2009 کمپایل کنم
یک مورد که از زمان indy10 بوده مشکل تبدیل هستش
خب بعضی از تغییرات آسونه و قبلا اینجا هم صحبت شده ولی بعضی ها هم کمی سخت

در قسمت سرور یعنی کامپوننت TIdTCPServer


AThread.Connection.LocalName
AThread.Connection.Terminated


ممنون میشم راهنمایی کنین

gbg
دوشنبه 08 تیر 1388, 01:26 صبح
یک مشکل دیگه

وقتی که در دلفی 7 کد زیر رو اجرا میکنم


frmMain.Client.ReadBuffer(Paket, SizeOf (TPaketTransform));



درست کار میکنه ولی وقتی تبدیل به کد زیر میشه هیچ اطلاعاتی دریافت نمیکنه


frmMain.Client.Socket.ReadBytes(Buf, SizeOf(TPaketTransform));
BytesToRaw(Buf, Paket, SizeOf(TPaketTransform));

vcldeveloper
دوشنبه 08 تیر 1388, 03:10 صبح
برخی از مفاهیم پایه ایی در Indy 10 نسب به Indy 9 تغییر کردند. در این مورد مقاله ایی در سایت CodeGear موجود هست.


AThread.Connection.LocalName
AThread.Connection.Terminated


AContext.Connection.Socket.BoundIP;
AContext.Connection.Disconnect;


frmMain.Client.Socket.ReadBytes(Buf, SizeOf(TPaketTransform));
BytesToRaw(Buf, Paket, SizeOf(TPaketTransform));
Buf را چطور مقداردهی اولیه کردید؟

gbg
دوشنبه 08 تیر 1388, 10:54 صبح
ممنون
چون چون دستور خواندن هست مقدار اولیه نکردم. ولی با setlenght هم طولش رو ست کردم باز هم نشد
البته buf رو اینجوری تعریف کردم buf : tidbytes


frmMain.Client.Socket.ReadBytes(Buf, SizeOf(TPaketTransform));


امروز که با دقت تریس کردم متوجه شدم بعضی وقت ها هم همون اطلاعاتی رو که بار اول خونده رو می گیره در صورتی که دیگه اون اطلاعات ارسال نشده
از AThread.Connection.Terminated برای اینکه بفهمم ترد تموم شده یا نه ولی فکر کنم معادلی که شما گفتین باعث قطع کردن ارتباط میشه
این هم AThread.Connection.LocalName برای بدست آوردن DNS استفاده کردم آیا BoundIP هم همین کار رو انجام میده؟

vcldeveloper
دوشنبه 08 تیر 1388, 11:43 صبح
از AThread.Connection.Terminated برای اینکه بفهمم ترد تموم شده یا نه ولی فکر کنم معادلی که شما گفتین باعث قطع کردن ارتباط میشه


AContext.Connection.Connected;


این هم AThread.Connection.LocalName برای بدست آوردن DNS استفاده کردم آیا BoundIP هم همین کار رو انجام میده؟
BoundIP آدرس اون کلاینت را برمیگردونه. تا جایی که اطلاع دارم، این آدرس میتونه یک IP یا یک نام در صورت وجود DNS Server باشه.