Как вставить содержимое файла в текущую позицию TMemo?

Для чтения файла будем использовать TMemoryStream, а затем используем метод SetSelTextBuf() из TMemo, чтобы вставить в него текст:

var

 TheMStream : TMemoryStream;

 Zero : char;

begin

 TheMStream := TMemoryStream.Create;

 TheMStream.LoadFromFile('C:\AUTOEXEC.BAT');

 TheMStream.Seek(0, soFromEnd);

//Буфер завершается нулём!

 Zero := #0;

 TheMStream.Write(Zero, 1);

 TheMStream.Seek(0, soFromBeginning);

 Memo1.SetSelTextBuf(TheMStream.Memory);

 TheMStream.Free;

end;

Взято из http://forum.sources.ru

Как мне импортировать файл в элемент управления TMemo начиная с позиции курсора? LoadFromFile заменяет содержимое TMemo содержимым текстового файла. Я хочу включить текстовый файл или в поцизию курсора или, если выбран текст, заменить этот текст содержимым текстового файла. Все это должно быть похоже на работу фунции PasteFromClipboard.
Самый простой путь вставки текста в компонент Memo заключается в посылке ему сообщения EM_REPLACESEL.

{ InsertFileInMemo--
ПРИМЕЧАНИЕ: если вы хотите заменить к настоящему времени
выбранный в Memo текст, передайте в параметре ReplaceSel
TRUE. FALSE необходим для простой вставки текста... }

procedure InsertFileInMemo(Memo: TMemo; FileName: string;
 ReplaceSel: Boolean);
var
 Stream: TMemoryStream;
 NullTerminator: Char;
begin
 Stream := TMemoryStream.Create;
 try
  { Загружаем текст... }
  Stream.LoadFromFile(FileName);
  { Добавляем в конец текста терминирующий ноль... }
  Stream.Seek(0, 2);
  NullTerminator := #0;
  Stream.Write(NullTerminator, 1);
  { Вставляем текст в Memo... }
  if not ReplaceSel then
  Memo.SelLength := 0;
  SendMessage(Memo.Handle, EM_ReplaceSel, 0,
  LongInt(Stream.Memory));
 finally
  Stream.Free;
 end;
end;

http://delphiworld.narod.ru/ DelphiWorld 6.0

procedure TForm1.Button1Click(Sender: TObject);
 var
  sl: TStringList;
 begin
  sl := TStringList.Create;
  try
  sl.LoadFromFile('c:\afile.txt');
  Memo1.SetSelTextBuf(PChar(sl.Text));
  finally
  sl.Free;
  end;
 end;

Взято с сайта: http://www.swissdelphicenter.ch

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...