Как вставить содержимое файла в текущую позицию TMemo?
01.01.2007
Для чтения файла будем использовать 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;
Взято из https://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;https://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;
Взято с сайта: https://www.swissdelphicenter.ch