Mega Code Archive

 
Categories / Delphi / VCL
 

How to get the amount of data in a memo control

Title: How to get the amount of data in a memo control Question: How do you tell the amount of data contained in a TMemo component? Delphi has a finite TMemo limit and I want to check the available size before adding new text. If the TMemo is too close to the l 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 can be made during the course of the function's run. Then all the text is selected in the memo with the SelectAll method. The length of the selected text (SelLength) is then assigned to the function's Result, then the cursor is moved to the beginning of the memo. After that, LockWindowUpdate is called with a zero-value handle, to unlock the screen. Conceivably, this _should_ give you the length of the total text. I haven't tried 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 try doing this: str := Memo1.Text; TextLength := Length(str); str := ''; However, this will take up resources.