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

نام تاپیک: جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

    برای اینگه فرم و برنامه بهنگام لود کردن یک فایل Text بزرگ در MEMO فریز نشود چه راهی هست؟

  2. #2

    نقل قول: جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

    ترد Thread
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  3. #3
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    نقل قول: جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

    ممنون از پاسختون.

    من برای این کار از ThreadWorker استفاده کردم و با دستور
    Memo1.Lines.loadFromFile(FileListBox1.FileName);
    در ترد ورکر که این ترید ورکر با OnChange مربوط به FileListBox1 اجرا میشه.
    متاسفانه هنوزم فرمم فریز میشه.

  4. #4

    نقل قول: جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

    فایلتون چند گیگه؟
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  5. #5
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    نقل قول: جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

    خیلی بزرگ نیست. در حد چند مگ هست. ولی حدود هفت هشت ثانیه باعث فریز شدن برنامه میشه و این برای برنامه ام خیلی مهمه. چون باید به کلاینتهای شبکه هم درصورت سوال، پاسخدهی کنه. اگه فریز بشه باعث از دست رفتن برخی درخواستها میشه. و نیز برخی کارهای برنامه ریزی شده رو چون با زمان براش تعریف شده ممکنه از دست بده.

  6. #6

    نقل قول: جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

    یک فایل 50 مگی تست کردم، مشکل پیش میاد، ایراد هم نه در خود لود، بلکه در شی لاین کاستوم شده ممو هست، چون همین فایل رو در استریم، یا حتی در StringList لود کردم و زیر یک ثانیه اتفاق می افته.
    یک سری پیام ویندوزی رد و بدل می شه که اونها کار رو کند می کنند.
    راه حل چیه، به نظرم اگر اجباری در نشون دادن محتوا به یوزر ندارید اون رو در استرینگ لیست لود کنید، اگر هم اجبار وجود داره این کار رو بانچ بانچ انجام بدید و مثلا هربار 1000 خط لود کنید تا کار لود کامل انجام بشه. احتمالا کامپوننت های دیگه ای از شرکت های دیگه موجود باشند که این قسمت رو شخصی سازی کرده باشند برای سرعت بالاتر، ولی سوال اصلی اینه که اصلا چرا ممو؟
    مثلا می شه همین دیتا رو در کلاینت دیتاست لود کرد و در گرید نمایش داد.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  7. #7
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    نقل قول: جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

    سلام
    ممنون از محبت و پاسختون

    من با توجه به اینکه اطلاعات دریافتی روی یک خط که شامل پیامهای متنی هست رو روزانه در یک فایل بصورت متن ذخیره میکنم، برای لود اون متن، فایل مربوطه رو باز میکنم و تو ممو نشون میدم. این کار رو با استفاده از FileListBox انجام میدم و کاربر با کلیک روی فایل، اونو در ممو لود میکنه.
    ولی باوجودی که حجمی نداره چند ثانیه (هفت هشت ثانیه) برای لودش برنامم فریز میشه.

  8. #8

    نقل قول: جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

    همون اطلاعات رو در یک مموری تیبل مثل ClientDataSet بریزید و در نهایت در فایل ذخیره کنید، از خود فایل هم به راحتی لود می شه. فرمت XML رو هم ساپورت می کنه.
    برای نمایش هم به راحتی در گرید می شه نمایشش داد، سرچ و لوکیت و فیلتر و سایر موارد دیتاست ها رو هم به راحتی روش انجام می دید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  9. #9

    نقل قول: جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

    نقل قول نوشته شده توسط seyed_farid مشاهده تاپیک
    برای اینگه فرم و برنامه بهنگام لود کردن یک فایل Text بزرگ در MEMO فریز نشود چه راهی هست؟
    برای اینکه برنامه در هنگام لود کردن یک فایل text بزرگ در memo، فریز نشود، می‌توانید از روش AsyncLoad یا بارگذاری ناهمزمان استفاده کنید.

    روش AsyncLoad، به شما این امکان را می‌دهد که فایل را به صورت ناهمزمان در memo لود کنید. هنگامی که این روش استفاده می‌شود، برنامه شما به صورت Async یا ناهمزمان عمل می‌کند و فریز نمی‌شود.

    برای استفاده از روش AsyncLoad، می‌توانید مراحل زیر را دنبال کنید:

    1. در فرم یک TTask متغیر ایجاد کنید.

    var
    FLoadTextTask: ITask<string>;



    2. در رویداد OnCreate فرم، کد زیر را بنویسید.


    procedure TForm1.FormCreate(Sender: TObject);
    begin
    // بارگذاری متن فایل ناهمزمان
    FLoadTextTask := TTask<string>.Create(
    function: string
    var
    FileStream: TFileStream;
    begin
    // باز کردن فایل و خواندن محتویات آن
    FileStream := TFileStream.Create('path/to/file.txt', fmOpenRead or fmShareDenyNone);
    try
    SetLength(Result, FileStream.Size div SizeOf(Char));
    FileStream.Read(PChar(Result)^, Length(Result) * SizeOf(Char));
    finally
    FileStream.Free;
    end;
    end
    );
    FLoadTextTask.Start;

    // ایجاد رویداد بندی برای بارگیری ناهمزمان متن فایل
    Application.OnIdle := OnLoadedTextIdle;
    end;


    3. در رویداد OnIdle فرم، کد زیر را بنویسید.


    procedure TForm1.OnLoadedTextIdle(Sender: TObject; var Done: Boolean);
    begin
    // بررسی آماده‌بودن محتویات فایل برای بارگیری
    if FLoadTextTask.Status = TTaskStatus.Completed then
    begin
    // انتقال محتویات فایل به memo
    Memo1.Text := FLoadTextTask.Value;

    // حذف رویداد بندی بارگیری ناهمزمان متن فایل
    Application.OnIdle := nil;
    end;
    end;


    در این روش، تمام فایل باز می‌شود و محتویات آن به صورت فشرده در Result ذخیره می‌شود. سپس در رویداد OnIdle، بررسی می‌شود آیا محتویات فایل آماده است یا خیر، در صورت آماده‌بودن محتوای فایل، محتویات فایل به memo انتقال داده می‌شود.

  10. #10

    نقل قول: جلوگیری از فریز شدن فرم بهنگام لود فایل تکست بزرگ در Memo

    مساله اصلا خواندن از فایل نیست، فایل رو لود کنید، زمان ریختن از مموری روی ممو رو تست بگیرید متوجه می شوید
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

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

  1. سوال: مشکل در نمایش متن تکست باکس از نوع memo
    نوشته شده توسط mahmooddavoodi در بخش Access
    پاسخ: 9
    آخرین پست: یک شنبه 29 آذر 1394, 12:26 عصر
  2. جمع مقادير دو Memo در فست ريپورت
    نوشته شده توسط mydelphi در بخش ابزارهای گزارش سازی در دلفی
    پاسخ: 5
    آخرین پست: چهارشنبه 04 خرداد 1390, 23:09 عصر
  3. کنترل memo فست ریپورت
    نوشته شده توسط khoshblagh در بخش ابزارهای گزارش سازی در دلفی
    پاسخ: 5
    آخرین پست: دوشنبه 15 شهریور 1389, 11:52 صبح
  4. جمع مقادیر دو memo در فست
    نوشته شده توسط arezoo_sh در بخش ابزارهای گزارش سازی در دلفی
    پاسخ: 4
    آخرین پست: پنج شنبه 29 مرداد 1388, 14:25 عصر
  5. انتقال نوشته Memo بانک اطلاعاتی به Memo Field
    نوشته شده توسط ByRoad در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: جمعه 25 بهمن 1387, 16:20 عصر

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

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