ورود

View Full Version : سوال: دستوری بجای ReadLn در شبکه ایندی که بجای لاین با دریافت کلمه پایان پذیرد



seyed_farid
دوشنبه 17 آبان 1395, 09:37 صبح
با سلام
من از ایندی سرور استفاده میکنم. میخوام متنی که به سرور ارسال میشه بجای اینکه مثلا رفتن به خط بعد ReadLn
انجام میده ، با دریافت یک کلمه بعنوان پایان پیام ، اون را درنظر بگیره و وقتی اون کلمه رو گرفت بفهمه آخر پیامه.
دوستان و اساتید بزرگوار اگه میشه راهنمایی بفرمائید. ممنون:تشویق:

Mask
دوشنبه 17 آبان 1395, 10:01 صبح
سوالتون رو باید د بخش شبکه ایجاد میکردید.
راحتترین روش برای این مورد استفاده از کامند هندلر هست.تحقیق کنید.

seyed_farid
دوشنبه 17 آبان 1395, 13:20 عصر
ممنون از راهنمائیتون. :تشویق:
ولی من قراره فقط گیرنده تکست ارسالی کاربر باشم و بدون ارسال چیزی متن مورد نظر برام ارسال میشه و مشکل اینه که پس از پایان پیام فقط یک عبارت مشخص (مثلاً EEEEE) که نشاندهنده اتمام پیام هست ارسال میشه و چون در سیستم ارسال کننده پایان خط درنظر گرفته نشده لذا وقتی من از دستور readLn استفاده میکنم مقداری از عبارت میمونه تا خط بعد که سری بعد ارسال میشه. من میخوام منتظر خط بعد نشه.

Felony
دوشنبه 17 آبان 1395, 16:21 عصر
متد ReadLn که ازش صحبت میکنید یه overload دیگه داره با این ساختار :


function ReadLn(ATerminator: string; AByteEncoding: TIdTextEncoding
{$IFDEF STRING_IS_ANSI}; ADestEncoding: TIdTextEncoding = nil{$ENDIF}
): string; overload;

احتمالا تو نت هم براش مثال پیدا میشه .

مورد بعد هم مجبور نیستین از این متد استفاده کنید ، متد ReadBytes هم داره که میتونید تو یه حلقه بینهایت بخونید تا متن تمام کننده رو دریافت کنید و بعد از حلقه خارج بشید .

روش های دیگه هم هست ولی همینا کارتون رو راه میندازه .

seyed_farid
سه شنبه 18 آبان 1395, 12:57 عصر
ممنون از راهنمائیتون :تشویق:

من با نوشتن همون دستور ReadLn به شکل زیر حلش کردم:

AThread.Connection.Readln('EEEEE')