PDA

View Full Version : لود فایلهای rich حجیم در دلفی



IKHATAMI
شنبه 13 تیر 1388, 19:56 عصر
با سلام
من در لود کردن فایلهای حجیم حدودا 4 مگابایت به بالا که به صورت RTF هستند در ریچ ادیت مشکل دارم و برنامه قفل می کند مرا راهنمایی کنید
:گریه:

Felony
شنبه 13 تیر 1388, 20:10 عصر
برای این کار یک نخ جداگانه در برنامه نیاز دارید تا این عمل رو انجام بده .
در مورد Thread ها تحقیق کنید .

IKHATAMI
شنبه 13 تیر 1388, 20:23 عصر
با تشکر
راستش من با THREAD ها زیاد کار نکرده ام ولی فکر کنم برای چند کار همزمان استفاده می شه من فقط می خواهم یک فایل حجیم را در ریچ ادیت یا هر ادیتور دیگر (کامپوننت دیگر) ویرایش و ادیت کنم.
لطفا اگر می شه ابزار یا راهکار ساده تری عنوان نمایید

Felony
شنبه 13 تیر 1388, 21:09 عصر
راستش من با THREAD ها زیاد کار نکرده ام ولی فکر کنم برای چند کار همزمان استفاده می شه
برای مشکل شما هم استفاده میشه ، مشکل شما این هست که برنامه فریز میشه درسته ؟ پس باید کار لود کردن فایل رو به یک نخ جدا بسپارید تا نخ اصلی برنامه این پردازش رو انجام نده و برنامه فریز نشه .

IKHATAMI
یک شنبه 14 تیر 1388, 06:56 صبح
راستش مشکل فریز شدن نیست بلکه برنامه کلا هنگ می کنه حتی اگر یک ساعت برنامه را به حال خودش رها کنی آزاد نمی شه. حالا اگر ممکن است لطف کنید یک فایل 4 یا 8 مگ از نوع rtf را در یک ریچ لود کنید ببینید چی میشه. به عبارت دیگر مشکل زمان لود شدن نیست بلکه قفل کردن برنامه است
باز هم از توجه شما سپاسگذارم

Felony
یک شنبه 14 تیر 1388, 18:30 عصر
من یه تستی کردم به یک نتیجه رسیدم که قطعی نیست ، فکر میکنم در دلفی هم مانند VB شئ RichEdit بیشتر از 240 کیلو کارکتر نمیتونه بگیره ، البته مطمئن نیستم ولی با تستی که من کردم این طور نشون داد .

IKHATAMI
پنج شنبه 18 تیر 1388, 07:32 صبح
با تشکر
این را می دانم که تا تعداد کاراکتر خاصی قبول می کنه چاره چیست؟ من به دنبال چاره هستم در یک برنامه خاص نیاز است که فایل را در ریچ ادیت بازکنم ولی چون فایلم حجیم است هنگ میکنه ضمنا نمی توانم از ole استفاده کنم چون می خواهم روی فایل کنترلهای خاص انجام بدهم

Saeed_m_Farid
پنج شنبه 18 تیر 1388, 09:35 صبح
برای مشکل شما هم استفاده میشه ، مشکل شما این هست که برنامه فریز میشه درسته ؟ پس باید کار لود کردن فایل رو به یک نخ جدا بسپارید تا نخ اصلی برنامه این پردازش رو انجام نده و برنامه فریز نشه .
نه، دوستمون درست میگن؛ برنامه فریز نمیشه، هنگ میکنه، یعنی من برای امتحان با thread هم نوشتم ولی بازم فریز شد!
فکر می کنم این RichEdit تو load فایلهای حجیم مشکل داشته باشه ...
اینم thread ای که واسه اینکار نوشتم ولی بیشتر از 2.5 مگ فکر میکنم قاط میزنه:


unit Load_th_u;

interface

uses
Classes,
SysUtils;

type
TLoadRTF = class(TThread)
private
public
procedure UpdateRichEdit;
protected
procedure Execute; override;
end;

implementation

uses Main_u;

{ TLoadRTF }

procedure TLoadRTF.UpdateRichEdit;
begin
try
frmMain.RichEdit1.Lines.Add(FormatDateTime('yyyy/mm/dd hh:nn:ss > ', Now)
+ 'Start loadind, please wait ... ');
frmMain.RichEdit1.Lines.LoadFromFile(g_FileName);
except on ex: Exception do
frmMain.RichEdit1.Lines.Add(FormatDateTime('yyyy/mm/dd hh:nn:ss > ', Now)
+ 'Exception on UpdateRichEdit > '+ex.Message);
end;
end;

procedure TLoadRTF.Execute;
begin
FreeOnTerminate := True;
Synchronize(UpdateRichEdit);
end;

end.


سورس رو هم ضمیمه کردم.