ورود

View Full Version : سوال: سریع کنترل Memo ای که میشناسید کدام است؟



BORHAN TEC
جمعه 18 اسفند 1391, 12:47 عصر
سلام بر همه دوستان عزیز
به دنبال یک کنترل Memo می گردم که سرعت درج اطلاعات و خواندن اطلاعات در آن سریعتر از حالت معمول باشد. من فایلهای متنی ای دارم که حجم آنها زیاد است می می خواهم که بتوانم کل آنرا به صورت یکجا در یک کنترل Memo نمایش دهم ولی شی TMemo سرعت کمی دارد و بنابرین نمی تواند مشکل من را حل کند. آیا شما کنترل Memo خاصی را می شناسید که سرعت درج و خواندن اطلاعات در آن بالا باشد؟
موفق باشید...

samani
شنبه 19 اسفند 1391, 09:41 صبح
سلام
در حالت عادي درج و ويرايش اطلاعات در TStrings كند ميباشد كه با استفاده از دستورات Beginupdate و Endupdate تا 50 برابر سرعت را ميتوان بالا برد
البته در مورد TMemo كمتر ، اگر از LoadFromFile استفاده كنيم زياد فرقي نميكند
با استفاده از LoadFromFile در يك StringList و استفاده از Seltext ميتوان يك فايل متني حدوداً يك مگابايتي را كه 4 تا 5 ثانيه طول ميكشد را به كمتر از 400 ميلي ثانيه برسونيم

نمونه كد:

procedure TForm1.Button1Click(Sender: TObject);
var
t: Cardinal;
sl: TStringList;
begin
sl := TStringList.Create;
try
sl.BeginUpdate;
t := GetTickCount;
sl.LoadFromFile('YourFile.txt');
t := GetTickCount - t;
Label1.Caption := IntToStr(t);

Memo1.Lines.BeginUpdate;
Memo1.Lines.Clear;
t := GetTickCount;
Memo1.SelStart := 0;
Memo1.SelText := sl.Text;
t := GetTickCount- t;
Label2.Caption := IntToStr(t);

Memo1.Lines.EndUpdate;
sl.EndUpdate;
finally
sl.Free;
end;
end;