Как вставить содержимое файла в текущую позицию TMemo?
Материал из DRKB
Как вставить содержимое файла в текущую позицию 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;
Source: Взято из http://forum.sources.ru
ID: 00550
Как мне импортировать файл в элемент управления 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;
Source: http://delphiworld.narod.ru/
ID: 00992
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;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 00994