Как вставить содержимое файла в текущую позицию курсора в компоненте TMemo
Муж в больнице после операции. Приехала навестить, а там обход. Врач спрашивает:
-Температура какая?
Он отвечает:
-Нормальная! 33,6...
Врач странно так посмотрела, говорит:
-Это нормальная?
Муж:
-Нет?
А я стою и думаю: Нормальная, не нормальная, а у меня больше и не бывает...
var
TheMStream: TMemoryStream;
Zero: char;
begin
TheMStream := TMemoryStream.Create;
TheMStream.LoadFromFile('C:.BAT');
TheMStream.Seek(0, soFromEnd);
//Null terminate the buffer!
Zero := #0;
TheMStream.write(Zero, 1);
TheMStream.Seek(0, soFromBeginning);
Memo1.SetSelTextBuf(TheMStream.Memory);
TheMStream.Free;
end;
Here is the translation of the content into Russian:
Вы хотите вставить содержимое файла в текущую позицию курсора в компоненте TMemo.
Код:
var
TheMStream: TMemoryStream;
Zero: char;
begin
TheMStream := TMemoryStream.Create;
TheMStream.LoadFromFile('C:\\.BAT');
TheMStream.Seek(0, soFromEnd);
//Null terminate the buffer!
Zero := #0;
TheMStream.Write(Zero, 1);
TheMStream.Seek(0, soFromBeginning);
Memo1.SetSelTextBuf(TheMStream.Memory);
TheMStream.Free;
end;
Код создает объект TMemoryStream, чтобы хранить содержимое файла. Затем он загружает содержимое файла в поток с помощью LoadFromFile.
Позиция курсора в компоненте TMemo не используется в этом коде, поэтому unclear, что вы имеете в виду под "текущей позицией курсора". Однако, если вы хотите вставить содержимое файла в конкретную позицию в тексте мемо, вы можете использовать Memo1.SelText := Memo1.Text + TheMStream.Memory; вместо Memo1.SetSelTextBuf(TheMStream.Memory);. Это добавит содержимое файла к текущему тексту выбора в мемо.
Также, пожалуйста, учитывайте, что загрузка файла .BAT в компоненте TMemo может не быть безопасной, если вы ожидаете, что файл будет содержать простой текст. Файлы .BAT могут содержать исполняемые команды и потенциально могут нанести вред вашему системе, если они будут выполнены.
Наконец, рекомендуется использовать блоки try-finally, когда работаете с ресурсами системы, такими как потоки:
var
TheMStream: TMemoryStream;
begin
TheMStream := TMemoryStream.Create;
try
TheMStream.LoadFromFile('C:\\.BAT');
//...
finally
TheMStream.Free;
end;
end;
Таким образом, даже если исключение происходит во время выполнения вашего кода, TheMStream будет правильно освобождаться и не вызывать ресурсный дефицит.
В статье описывается способ вставки содержимого файла в текущую позицию курсора в компоненте TMemo Delphi, используя ТMemoryStream и метод SetSelTextBuf.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.