نمایش نتایج 1 تا 13 از 13

نام تاپیک: از اساتید محترم خواهشمندم کمک نمائید - Indy و طراحی مسنجر

  1. #1

    Question از اساتید محترم خواهشمندم کمک نمائید - Indy و طراحی مسنجر

    با سلام
    من با Indy توانستم پیام ارسال نمایم و لیست کاربران آنلاین را هم دریافت نمایم .
    اما یک مشکلی که دارم این است که برنامه کلاینت هنگ می کند . یک Antifreez هم روی فرم قرار دادم اما وقتی فرم را drag می کنم برنامه هنگ می کند .
    از اساتید خواهش می کنم مرا یاری نمایند.

  2. #2
    کاربر دائمی آواتار Touska
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    ایران زمین
    سن
    39
    پست
    1,988
    شما اگر از Timer استفاده کرده اید بی فایده هست. شما باید از Thread استفاده نمایید نه از Timer.

  3. #3
    بله من از timer استفاده نمودم . ولی چگونه به جای timer از thread استفاده نمایم
    آخرین ویرایش به وسیله saniak_robot : چهارشنبه 03 اسفند 1384 در 08:49 صبح

  4. #4
    آقای سرباززاده من یک thread رو فرم قرار دادم و کدهایی که در تایمر نوشته بودم را در onrun آن نوشتم مشکلم حل شد .
    از راهنمایی شما متشکرم.

  5. #5
    کاربر دائمی آواتار Touska
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    ایران زمین
    سن
    39
    پست
    1,988
    منظور من تعریف thread به این شکل هست :

    Type
    PClient =^ TClient;
    TClient = Record //Object for holding connected user
    DNS,Name : String; //Host name and user name
    Connected,
    LastAction : TDateTime; //Last Connect time and action time
    Thread : Pointer; //Hold a pointer of thread's user
    End;


    به اون کاری که شما کرددی که دیگه thread نمی گن.

  6. #6
    کاربر دائمی آواتار Touska
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    ایران زمین
    سن
    39
    پست
    1,988
    و برای استفاده :

    Clients : TThreadList;


    و بعد اینجوری تو کانکت می نویسی :

    procedure Connecting(UserName,DNS: String; Thread: Pointer);
    Var
    NewClient : PClient;
    begin
    New(NewClient);


    NewClient.Name := Trim(UserName);
    NewClient.DNS := DNS;
    NewClient.Connected := StrToDateTime(PrintNormal+' '+TimeToStr(Time));
    NewClient.LastAction := NewClient.Connected;
    NewClient.Thread := Thread;
    //Connect client and add thread
    TIdPeerThread(Thread).Data := TObject(NewClient);

    End;


    و در tcpserverexecute دستورات فرمانی رو کار کن.

  7. #7
    کاربر دائمی آواتار Touska
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    ایران زمین
    سن
    39
    پست
    1,988
    و در client به این شکل کار میکنی :


      TClientHandleThread = Class(TThread)          //Class Thread
    Private
    Transfer : TDataTransform;

    Procedure HandleInput; //Input of Transfer data

    Protected
    Procedure Execute; Override; //Excute the client

    End;

    و نوع تعریفش :

    ClientHandleThread : TClientHandleThread; // variable (type see above)

    و برای ردگیری :

    { TClientHandleThread }

    procedure TClientHandleThread.Execute;
    begin
    While Not Terminated Do
    Begin
    IF Not Client.Connected Then
    Terminate
    Else
    Try
    Client.ReadBuffer(Transfer, SizeOf (Transfer));
    Synchronize(HandleInput);
    Except
    End;
    End;
    end;

    و برای دستورات :

    procedure TClientHandleThread.HandleInput;
    Var
    Commands : Char;
    begin
    Commands := Transfer.Command[1];
    Case Commands OF
    '@' : //Check for password and other
    Begin
    IF Trim(Transfer.Text) = 'False' Then
    Disconnecting(True,False); //job for disconnect
    End;
    End;

  8. #8
    کاربر دائمی آواتار Touska
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    ایران زمین
    سن
    39
    پست
    1,988
    با این تیکه کدها که فرستادم می تونید یک چیزی مثل Jabber یا Yahoo Messenger بنوسید.

    :)

  9. #9
    آقا من و شرمنده خودت کردی.
    دستت درد نکنه

  10. #10
    ba sallam khedmate asatideh mohtaram ,,man tazeh be barname nevisi rooey awordam daram VB kar mikonam mishe lotf befarmaeed ke joori in matno tozih bedin ta manam motavajjeh besham..mamnoon

  11. #11
    ...daram VB kar mikonam mishe lotf befarmaeed ke joori in matno tozih bedin...
    عزیز جان، اینجا بخش دلفی هست، کدی هم که در بالا نوشته شده کد دلفی هست. شما باید برید به بخش VB.

  12. #12
    با تشکر از توسکای عزیز
    آقای یک زحمت بکشید و اینکه شما که کدها را گذاشتین خود پروژه را بذارید اگر امکان دارد
    باتشکر
    داود

  13. #13
    می شه آقای Touskaفایل نوشته شده مسنجر را به صورت اوپس سورس بزارید من تازه با این کامپوننت دلفی آشنا شدم می شه کمکم کنید
    farshad_momtaz@yahoo.com

تاپیک های مشابه

  1. برنامه نویسی شبکه ( راهنمای گام به گام Indy ) - بخش اول
    نوشته شده توسط www2006 در بخش مقالات مرتبط با Delphi/Win32
    پاسخ: 41
    آخرین پست: پنج شنبه 21 مرداد 1389, 02:09 صبح
  2. indy
    نوشته شده توسط aserfg در بخش مقالات مرتبط با Delphi/Win32
    پاسخ: 22
    آخرین پست: جمعه 17 خرداد 1387, 19:42 عصر
  3. مشکل در indy
    نوشته شده توسط neda azadi در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: شنبه 04 فروردین 1386, 13:41 عصر
  4. هندل کردن خطا در کار کردن با Indy
    نوشته شده توسط TrueFalse در بخش برنامه نویسی در Delphi
    پاسخ: 8
    آخرین پست: شنبه 20 خرداد 1385, 01:35 صبح
  5. خطا در استفاده از Indy
    نوشته شده توسط MNosouhi در بخش برنامه نویسی در Delphi
    پاسخ: 0
    آخرین پست: سه شنبه 29 فروردین 1385, 11:52 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •