devxlogo

How can you tell the amount of data contained in a TMemo component?

How can you tell the amount of data contained in a TMemo component?

Question:
How do you tell the amount of data contained in aTMemo component? Delphi1 has a finite TMemo limit and I want to check the available size beforeadding new text. If the TMemo is too close to thelimit, I can remove the first line and manage it asa kind of big buffer.

Answer:
You could do something like this:

function GetTotalTextLength(var MyMemo : TMemo) : LongInt;begin  {Lock all screen updates to prevent flickering}  LockWindowUpdates(Parent.Handle);  with MyMemo do begin    SelectAll;    Result := SelLength;    SelStart := 0;    SelLength := 0;  end;  LockWindowUpdates(0);end;
What’s happening above is that the screen is locked so that no updates canbe made during the course of the function’s run. Then all the text isselected in the memo with the SelectAll method. The length of the selectedtext (SelLength) is then assigned to the function’s Result, then the cursoris moved to the beginning of the memo. After that, LockWindowUpdate iscalled with a zero-value handle, to unlock the screen.Conceivably, this _should_ give you the length of the total text. I haven’ttried this myself, but it should work. And if not, then just play with it.The idea is to select all the text, then get the length. You might even trydoing this:
str := Memo1.Text;TextLength := Length(str);str := ”;
However, this will take up resources.

devx-admin

Share the Post: