صفحه 1 از 3 123 آخرآخر
نمایش نتایج 1 تا 40 از 103

نام تاپیک: همه چیز درباره Indy

  1. #1

    همه چیز درباره Indy

    با سلام ؛

    در مرحله اول آور ویویی بر کار سرورها و کلاینتها خواهیم داشت .

    کلاینت :

    کلاینت به این شکل به سرور متصل میشه :

    with IndyClient do begin
    Host := 'IndyServer.Barnamenevis.org';

    آدرس سروری که میبایست به آن متصل شد .
    Port := 6000;

    شماره پورتی که کلاینت باید به آن متصل شود .
    Connect; Try

    اقدام جهت برقراری ارتباط .
    finally Disconnect; end;

    و در نهایت قطع ارتباط
    end;

  2. #2
    توضیحات درباره کلاینت ؛

    کاری که کلاینت انجام میده اینه که جهت برقراری ارتباط آدرسی رو بعنوان Host Name ( که میتونه هم آدرس آی پی باشه و هم نام دی ان اسی ) و شماره ای رو بعنوان Port دریافت میکنه و بر اساس این 2 مشخصه توی شبکه بدنبال سرور میگرده و پس از پیدا کردن سرور اگر اجازه ورود داشته باشه به سرور متصل میشه .

  3. #3
    سرور :

    سرور ایندی بعد از فعال شدن در شبکه منتظر درخواستها میماند ٬ سرور به همه تقاضا ها گوش میکند و هر کدام را که مجاز به ورود باشد قبول میکند . سرور پس از قبول تقاضای کلاینت ٬ درون خود سرنخی ( Thread ) ایجاد میکند و امور مربوط به این اتصال را به آن قسمت هدایت میکند .

    در تصویر پیوست نمایی از فعالیت سرور را میبینید .

  4. #4
    :flower:
    امیدوارم ادامه داشته باشه!

    انشاء الله!


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  5. #5
    مدلهای برنامه نویسی برای سوکتها :

    در برنامه نویسی سوکتها برای ویندوز دو مدل برنامه نویسی داریم ٬ یکی Blocking و دیگری Non-Blocking . گاهی اوقات این دو مدل سنکرون و آسنکرون هم خوانده میشوند .

    synchronous به معنای همزمان
    asynchronous به معنای غیر همزمان


    تعداد اندکی مدلهای برنامه نویسی دیگری نیز موجود است که به دلیل نیاز به کد نویسی و داشتن اطلاعات بیشتر برای برنامه نویسی ابزارهای پیشرفته رزرو شده اند .

  6. #6
    کاربر دائمی
    تاریخ عضویت
    خرداد 1382
    محل زندگی
    l8026070@yahoo.com
    پست
    282
    با سلام
    با تشکر ادامه بدید :flower: :flower: :flower: :wink:

  7. #7
    Blocking :

    ایندی از روش Blocking Socket Calls استفاده میکند ٬ عملکرد این روش دقیقا مشابه خواندن و نوشتن در فایلهاست . وقتی که شما اطلاعات را میخوانید و یا اینکه اطلاعات را مینویسید توابع تا پایان کار بازگردانده نمیشوند .

    تفاوت کار فایلها و سوکتها در اینه که اطلاعات ممکنه در مورد سوکتها زمان بیشتری رو جهت بهره بری نیاز داشته باشه در صورتی که در فایلها این عمل خیلی سریع انجام میشه ٬ در کار با سوکتها ممکنه اطلاعات بی درنگ و بی وقفه آماده خواندن و نوشتن نباشه ٬ سرعت خواندن و نوشتن اطلاعات به نوع ارتباط شبکه ( سرعت انتقال اطلاعات ) بستگی داره .

    ایندی ٬ برای برقراری ارتباط یک درخواست ارسال میشود و منتظر جواب میماند . اگر ارتباط برقرار شد پیامی بر مبنای برقراری ارتباط ارسال میگردد ( پس از برقراری ارتباط ) و در صورتی که ارتباط برقرار نشد پیام مناسبی را ارسال میکند .

  8. #8
    Non Blocking :

    این روش بر مبنای رویدادها کار میکنه ٬ در این روش شما نیاز دارید که برای رویدادهای مختلف کد نویسی کنید . مثلا ٬ موقعی که شما اقدام به برقراری ارتباط میکنید ٬ شما باید متد اتصال را فراخوانی کنید ٬ متد اتصال بی درنگ قبل از اتصال سوکت برگردانده میشود . وقتی سوکت متصل شد رویداد جدیدی رخ میدهد .

    منطق این روش نیازمند اجرای پروسه های زیادی است .

  9. #9
    VIP آواتار hr110
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    ایران - تهران
    پست
    1,460
    :flower: :kiss:
    اگه ممکنه در مورد threadهای سمت سرور هم کمی توضیح بدهید، توضیح در مورد اینکه چگونه این کار انجام میشود و چطور میتوان آن را پیاده نموده
    ... چه بگویم که غم از دل برود چون تو بیایی

  10. #10
    کاربر دائمی
    تاریخ عضویت
    دی 1382
    محل زندگی
    پشت كامپيوتر
    پست
    381
    خیلی جالب شد
    لطفا یک مثال کوچک همراه با توضیح بیاورید :flower:

  11. #11
    نقل قول نوشته شده توسط hr110
    :flower: :kiss:
    اگه ممکنه در مورد threadهای سمت سرور هم کمی توضیح بدهید، توضیح در مورد اینکه چگونه این کار انجام میشود و چطور میتوان آن را پیاده نموده
    با سلام ؛

    چشم آقای ربیعی به اون قسمت هم خواهیم رسید ٬ در مورد مثال هم در انتهای کار یک برنامه چت ساده مینویسم و سورسش رو در اختیارتون قرار میدم .

  12. #12
    کاربر دائمی
    تاریخ عضویت
    دی 1382
    محل زندگی
    پشت كامپيوتر
    پست
    381
    بابا دمت گرم تو دیگه کی هستی بابا تو دیگه کی هستی ....
    موفق باشی دوست عزیز :flower:

  13. #13
    مشکل Freeze در کلاینتها :

    در روش برنامه نویسی Blocking تماسها پس از کامل شدن کارشان پاسخ بازگشتی نمیدهند . وقتی چنین تماسهایی در Thread اصلی برنامه ساخته میشوند ٬ برنامه نمیتواند به درخواست کاربر پاسخ دهد و به این ترتیب سبب میشود برنامه به حالت Freeze در آید .

    Freeze به این علت صورت میگیرد که پیامهای جدید و پیامهای جدید شده ( بروز شده ) تا زمانی که پاسخ تماسهای سوکتهای بلاکینگ ( بعد از انجام کار ) به کنترل رسیدگی کننده برنامه نرسد نمیتوانند پیشرفتی داشته باشند .

  14. #14
    حل مشکل Freeze شدن کلاینتها :

    در مجموعه کامپوننتهای ایندی کامپوننت ویژه ای موجود است به نام TIdAntiFreeze که مشکل Freeze برنامه های شما رو خیلی راحت حل میکنه .

    وجود تنها یک کامپوننت TIdAntiFreeze به شما این امکان را میدهد تا تماسهای نوع بلاکینگ را بدون مشکل Freeze شدن در Thread اصلی برنامه داشته باشید .

    استفاده از یک کامپوننت TIdAntiFreeze برای برنامه های مبنی بر بلاکینگ سوکت مفید است و به شدت توصیه میگردد .

  15. #15
    Non Blocking مشکل Freeze را ندارد :

    در مدل برنامه نویسی Non Blocking ویندوز کنترل کاملی بر رویدادها دارد از این رو ویندوز حتی میتواند همزمان به پیامهای دیگری هم پاسخ دهد .

    در مدل برنامه نویسی Non Blocking یک Thread میتواند با سوکتهای زیادی سروکار داشته باشد . وقتی که نیازی به Thread ها جهت کار با تعداد سوکتهای زیاد نداشته باشیم میزان استفاده از منابع حافظه و پردازنده نیز کاهش میابد .

  16. #16
    کاربر دائمی آواتار jirjirakk
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    wwwroot
    پست
    660
    گلادیاتور جان ناز نفست :: کار واقعا باحالی رو شروع کردی :)
    میشه یه توضیح هم بدی از هر کدوم از این دو روش چه موقعی باید استفاده کنیم، یا اینکه کدوم روش بهتر هستش :flower:

    :heart:

  17. #17
    مثال عملی :

    بزرگترین تفاوت بین فایلها و سوکتها این است که در مجموع سرعت دسترسی به فایلها بیشتر است ٬ هرچند دسترسی به فایلها همیشه هم سریع نیست . فلاپی دیسک ها ٬ درایوهای شبکه ای ٬ منابع پشتیبان گیری و منابع سلسله مراتبی غالبا برای کار با فایلها زمان زیادی را نیاز دارند .

    در ادامه برای بهتر عنوان کردن مطالب مثالی را در مورد نحوه کار کردن مدل برنامه نویسی Blocking و Non Blocking بروی فایلها عنوان می کنم .

    و اما مثال :

    در ذیل روش باز کردن ٬ نوشتن اطلاعات و سرانجام بستن فایلی را از طریق دو مدل برنامه نویسی Blocking و Non Blocking را توضیح میدهیم .

    ابتدا یک متغیر رشته ای تعریف میکنیم و مقداری را به آن میدهیم .

    procedure TForm1.Button1Click(Sender: TObject);
    var
    s: string;
    begin
    s := 'Welcome To Barnamenevis.org , Stay and Enjoy' + #13#10;


    حالا اقدام به ایجاد و باز کردن فایل میکنیم .

    try
    with TFileStream.Create('c:\Barnamenevis\test.d at', fmCreate) do try


    در این مرحله نوبت نوشتن اطلاعات در فایل است .

    WriteBuffer(s[1], Length(s));


    و در آخر فایل را میبندیم .

    finally Free; end;
    end;
    end;


    این مثالی کوچک بر مدل برنامه نویسی Blocking بود ٬ همانطور که ملاحظه میفرمایید در مدل برنامه نویسی بلاکینگ کل کد نویسی در یک محل و پشت سر هم قرار دارد . ( در این مثال در رویداد OnClick مربوط به ‌Button1 صورت گرفت ) .

  18. #18
    حالا برای انجام همان کار در مدل برنامه نویسی Non Blocking به این شکل عمل میکنیم :

    در این مثال بصورت خیالی File1 را کامپوننت فایل Non Blocking در نظر گرفته ایم .

    در ابتدا فرض را بر این میگذاریم که کامپوننت File1 را بروی فرم قرار داده ایم ٬ برای شروع فایلی را که در مثال قبلی ایجاد کرده بودیم را باز میکنیم .

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    File1.Filename := 'c:\Barnamenevis\test.dat';
    File1.Open;
    end;


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

    procedure TForm1.File1OnOpen(Sender: TObject);
    var
    i: integer;
    begin
    FWriteData := 'Hello Mehdi Keramati , I am not a bad guy' + #13#10;
    i := File1.Write(FWriteData);
    Delete(FWriteData, 1, i);
    end;


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

    procedure TForm1.File1OnWrite(Sender: TObject);
    var
    i: integer;
    begin
    i := File1.Write(FWriteData);
    Delete(FWriteData, 1, i);
    if Length(FWriteData) = 0 then begin
    File1.Close;
    end;
    end;


    و در انتها بعد از بسته شدن فایل همه چیز به حالت عادی باز میگردد .

    procedure TForm1.File1OnClose(Sender: TObject);
    begin
    Button1.Enabled := True;
    end;


    ما در حقیقت هیچ گونه شی نوشتن فایل Non Blocking نداریم اما اگر همچین چیزی وجود داشت کد ما شبیه به کدی میشد که در مثال فوق به آن اشاره شد .

  19. #19
    لازم میدونم یک سری توضیحات کوتاهی رو در مورد مثال دوم بنویسم .

    اول اینکه شما باید به نحوه کار و کد نویسی دقت کنید و این مدل برنامه نویسی رو درک کنید ٬ هر لحظه که تصمیم گرفتید برنامه نویسی مدل Non Blocking را شروع کنید آنگاه متوجه خواهید شد که این مثال ساده و کوتاه چقدر میتواند مفید باشد .

    مرحله اول :
    رویداد Button1Click فایل را صدا زد و آن را باز نمود . تا موقع بازگرداندن متد Open فایل باز نشده و هنوز غیر قابل دسترسی است .

    مرحله دوم :
    رویداد OnOpen موقعی اعمال میشود که فایل باز شده و آماده دسترسی است . سعی در نوشتن در فایل میشود ولی همه اطلاعات ممکن است قابل قبول نباشد در این هنگام متد Write مقدار بایت قابل قبول برای نوشتن را بازمیگرداند ٬ اطلاعات ذخیره میشند ولی دوباره بعدا چک میشوند .

    مرحله سوم :
    رویداد OnWrite موقعی اعمال میشود که فایل آماده نوشتن اطلاعات بیشتر است و متد Write دوباره برای دریافت باقیمانده اطلاعات کوشش میکند .

    مرحله سوم تا زمانی که همه اطلاعات مورد قبول متد Write قرار گیرد دائما تکرار میشود ٬ موقعی که همه اطلاعات مورد قبول متد Write واقع شد متد Close فراخوانی میشود ولی فایل هنوز بسته نشده است .

    وقتی رویداد OnClose اعمال میشود فایل دگر بسته شده است .

  20. #20
    در ادامه جهت معرفی دو کامپوننت IdTcpServer و IdTcpClient از مجموعه کامپوننتهای Indy نمونه برنامه ای را ارائه خواهم کرد و سپس مرحله به مرحله بروی برنامه به معرفی کامپوننتها خواهیم پرداخت .

  21. #21
    آقای گلادیاتور...مرسی :flower:


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  22. #22
    با سلام مجدد ؛

    برای ادامه یکی از مقالات سایت Delphi.About.com رو ترجمه میکنم و پیرو اون بحث رو ادامه میدیم البته از این به بعد عملی .

  23. #23
    در این مرحله میخوایم برنامه ای رو بصورت سرور / کلاینت بنویسیم که از طریق این برنامه بتونیم از روی کامپیوترهایی که برنامه کلاینت بروی اونها در حال اجراست Screen Shot هایی رو تهیه کنیم و به سرور ارسال کنیم .

    حالا اول من برنامه رو آماده میکنم بعد اینجا قرارش میدم تا شما سورسش رو دانلود کنید .

  24. #24
    کاربر دائمی آواتار Mahdi_S_T
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    خراسان رضوی
    پست
    1,039
    قبلا من در مورد برنامه کافی نت از جناب gladiator راهنمایی خواستم . ظاهرا این تاپیک جواب خوبی برای من است . از زحمات جنابعالی کمال تشکر را دارم :flower: :heart:

  25. #25
    کاربر دائمی آواتار jirjirakk
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    wwwroot
    پست
    660
    گلادیاتور جان منم این کارو قبلا انجام دادم و سورسش و اینجا قرار میدم

  26. #26
    کاربر دائمی آواتار Mahdi_S_T
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    خراسان رضوی
    پست
    1,039
    چی شد ؟ دیگه خبری نیست !!؟

  27. #27
    چی شد ؟ دیگه خبری نیست !!؟
    توی تعطیلات نوروز ادامه میدم این بحث رو ...

    :flower:

  28. #28
    یک نمونه برنامه برای ارسال Email برای یکی از دوستان درست کردم ٬ همین باعث شد که تصمیم بگیرم این بحث رو ادامه بدم . همون برنامه رو اینجا قرار میدم تا بقیه دوستان هم استفاده کنند .

    توضیحاتش رو الان مینویسم .

  29. #29
    if SMTP.Connected=false then begin
    SMTP.Host:='mail.barnamenevis.org';
    SMTP.Port:=25;
    SMTP.Username:='MySMTPMailAccount';
    SMTP.Password:='MySMTPMailPassword';
    SMTP.Connect;
    MyMessage.Body.Text:=Memo1.Text;
    MyMessage.From.Address:='Gladiator@Barnamenevi s.org';
    MyMessage.Recipients.EMailAddresses:=edit1.Tex t;
    MyMessage.Subject:=edit2.Text;
    TIdAttachment.Create(MyMessage.MessageParts,Op enDialog1.FileName);
    SMTP.Send(MyMessage);
    end
    else
    begin
    MyMessage.Body.Text:=Memo1.Text;
    MyMessage.From.Address:='Gladiator@barnamenevi s.org';
    MyMessage.Recipients.EMailAddresses:=edit1.Tex t;
    MyMessage.Subject:=edit2.Text;
    TIdAttachment.Create(MyMessage.MessageParts,Op enDialog1.FileName);
    SMTP.Send(MyMessage);
    end;


    ابتدا باید کامپوننت IdSMTP رو setup کنیم ٬ برای اینکار به شکل ذیل عمل میکنیم :

    IdSMTP.Host:='YourHostname or IPAddress';

    IdSMTP.Port:=25;


    دوستان توجه کنید پراپرتی Host همون آدرس سروریه که شما ازش اکانت SMTP دارید . میتونید نام دی ان اسی و یا آدرس ای پی اون رو برای این پراپرتی ست کنید .
    پراپرتی دیگه ای که در این قسمت داریم Port که باید حتما مقدار صحیح رو ست کنید ٬ معمولا عدد 25 شماره پورت SMTP تعریف میشه .

    ادامه دارد .

  30. #30
    IdSMTP.Username:='MyUsername';

    در این قسمت خودتون رو به سرور معرفی میکنید .

    IdSMTP.Password:='MyPassword';

    و این هم رمز عبور شما برای متصل شدن به سرور .

    IdSMTP.Connect;

    حالا سعی میکنیم که به سرور متصل بشیم ٬ در این قسمت میتونیم TimeOut رو هم مشخص کنیم .

    تا اینجا ملزومات برقراری اتصال به SMTP Server رو فراهم کردیم ٬ حالا میتونیم بدنه Email رو Setup کنیم .

  31. #31
      MyMessage.Body.Text:=Memo1.Text; 
    MyMessage.From.Address:='Gladiator@barnamenevi s.org';
    MyMessage.Recipients.EMailAddresses:=edit1.Tex t;
    MyMessage.Subject:=edit2.Text;
    TIdAttachment.Create(MyMessage.MessageParts,Op enDialog1.FileName);
    SMTP.Send(MyMessage);


    برای ارسال نامه الکترونیک از طریق ایندی شما به یک کامپوننت TidMessage نیاز دارید ٬ به واسطه این کامپوننت شما میتونید بدنه نامه رو بسازید و بعد از طریق TidSMTP ارسال کنید .

    در کد فوق من کامپوننت TidMessage رو به MyMessage تغییر نام دادم و همچنین TidSMTP رو به SMTP .

    MyMessage.Body.Text:=Memo1.Text;

    ابتدا متن نامه رو از طریق یک Memo میگیریم .

    MyMessage.From.Address:='Gladiator@barnamenevi  s.org';

    براش مشخص میکنیم که نامه از طرف چه کسی ارسال شده .

    MyMessage.Recipients.EMailAddresses:=edit1.Tex  t; 

    مشخص میکنیم که نامه به چه آدرس یا آدرسهایی باید ارسال بشه .

    MyMessage.Subject:=edit2.Text;

    عنوان نامه رو مشخص میکنیم .

    تا اینجا بدنه نامه الکترونیک رو هم Setup کردیم . اگر نیاز دارید که همراه این نامه یک فایل ضمیمه نیز ارسال کنید ٬ کافیه مسیر فایل مورد نظر رو مشخص کنید و به شکل ذیل عمل کنید :

    TIdAttachment.Create(TidMessage.MessageParts,O  penDialog1.FileName); 


    TidAttachment به شما این امکان رو میده که به همراه پیام یک فایل رو هم ارسال کنید .

    حالا نوبت به ارسال Email میرسه :

    TidSMTP.Send(IdMessage);

  32. #32
    توجه داشته باشید که ارسال نامه های الکترونیک به این روش بسیار ساده و کاراست .

    حالا بر میگردیم به اصل مطلب ٬ مهمترین کامپوننتهایی که در مجموعه کامپوننتهای ایندی مشاهده میشه ( البته هر کامپوننتی برای کاری ساخته شده ) TidTCPClient و TidTCPServer هستند .

    با هم نمونه برنامه ای که برای این منظور نوشتم رو بررسی میکنیم و این بحث رو به پایان میرسونیم .

  33. #33
    کاربر دائمی آواتار Delphi Skyline
    تاریخ عضویت
    دی 1383
    محل زندگی
    شیراز
    پست
    1,174
    آقای gladiator من یدونه کامپیوتر دارم (Windows XP Media Editon 2005) و نمی خوام serverم تحت اینترنت باشه . آیا می شه من تو کامپیوترم یک Server درست کنم برای خودم . و حتی یک client . یعنی من هم بشم کاربر و هم Admin و بعد هم می خوام دیتابیسی باشه (With ACCESS) . بای (البته اینا برای یادگیری بود)

  34. #34
    من دقیقا متوجه نشدم که چی میخوای !

    در مورد سرور و کلاینت بروی یک کامپیوتر ٬ بله هیچ مشکلی نیست ٬ کافیه Host رو برابر با 127.0.0.1 قرار بدی .

    در مورد Database هم متوجه نشدم منظورت چیه .

  35. #35
    کاربر دائمی آواتار Delphi Skyline
    تاریخ عضویت
    دی 1383
    محل زندگی
    شیراز
    پست
    1,174
    خوب بعد نام server یا همان server name رو چی بزنم .
    و بعد چه طوری یک user براش تعریف کنم ؟

  36. #36
    کاربر دائمی آواتار Delphi Skyline
    تاریخ عضویت
    دی 1383
    محل زندگی
    شیراز
    پست
    1,174
    راسی آقای gladiator در مورد idsmtp . من هر وقت می خوام باهش کاننکت بشم error می زنه . ایمیلم هم با yahoo می زنم .

  37. #37
    یکبار از اول همه مطالب رو بخون متوجه میشی .

  38. #38
    راسی آقای gladiator در مورد idsmtp . من هر وقت می خوام باهش کاننکت بشم error می زنه . ایمیلم هم با yahoo می زنم .
    با اجازه از Gladiator عزیز،
    عزیز جان، اسم کامپوننت هست idSMTP برای ای میلهای رایگان Yahoo نمی تونید از پروتکل های SMTP/POP3 استفاده کنید! (فکر کنم قبلا 16صد بار اینو گفتیم :wink: )

    برای مابقی سوالات هم فکر کنم بهتر باشه همونطور که Gladiator گفت دوباره از اول یه دور این تاپیک رو بخونی.
    ظاهرا دقیقا متوجه مفاهیمی مثل Server, Client و خود Indy نشدی


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  39. #39
    کاربر دائمی آواتار Delphi Skyline
    تاریخ عضویت
    دی 1383
    محل زندگی
    شیراز
    پست
    1,174
    پس آقای کشاورز یه دو تا سایت بگید که SMTP باشن برای ایمیلش . آقای کشاورز Yahoo پاپ 3 است ؟
    اگر هست توی خود INDY همچین کامپاننتی هست؟

  40. #40
    آقای کشاورز Yahoo پاپ 3 است ؟
    سرویس رایگان نه ولی پولی داره

    دو تا سایت بگید که SMTP باشن برای ایمیلش .
    gmail :wink: رایگان داره

صفحه 1 از 3 123 آخرآخر

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

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

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

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