Here are some examples of how to use the TBlobStream to get text from a memofield.

{This one copies from one memo field to another.}

procedure TForm1.Button1Click(Sender: TObject);
var
  b1, b2: TBlobStream;
begin
  b1 := TBlobStream.create(Table1Notes, bmRead);
  try
    table2.edit;
    b2 := TBlobStream.create(Table2MyBlob, bmReadWrite);
    try
      b2.CopyFrom(b1, b1.size);
    finally
      b2.free;
    end;
  finally
    b1.free;
  end;
  table2.post;
end;
 
 

{Write to a stream.}
procedure TForm1.Button1Click(Sender: TObject);
var
  Stream: TBlobStream;
  s: string;
begin
  table1.edit;
  Stream := TBlobStream.Create(Table1Notes, bmReadWrite);
  try
    Stream.Seek(0, 2); {Seek 0 bytes from the stream's end point (2).}
    s := 'Lloyd is really cool.';
    Stream.write(s[1], length(s));
  finally
    Stream.Free;
  end;
  table1.post;
end;

{Read from a stream.}
procedure TForm1.Button1Click(Sender: TObject);
var
  Buffer: PChar;
  Size: Integer;
  Stream: TBlobStream;
begin
{ Here is how it is done from a query: }
{  Stream := TBlobStream.Create(query1.FieldByName('MemoField') as TBlobField, bmRead);}

  Stream := TBlobStream.Create(Table1MemoField, bmRead);
  try
    Size := Stream.Seek(0, 2);
    Stream.Seek(0, 0);
    Inc(Size);
    GetMem(Buffer, Size);
    try
      FillChar(Buffer^, Size, #0);
      Stream.Read(Buffer^, Size);
      Memo1.SetTextBuf(Buffer);
    finally
      FreeMem(Buffer, Size);
    end;
  finally
    Stream.Free;
  end;
end;

See also:
How do I fill a TMemo from a PChar using a TBlobStream?