Последние записи
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
30th
Ноя
Открыть файл для редактирования и проверить не открыт ли он другой программой
Posted by Chas under Delphi
Мне нужно программно открыть текстовый документ, расположенный по заранее известному адресу — открыть для редактирования, ну или полностью заменить его. Насколько я понял из букварей Delphi, другая программа, которая открыла файл, может открыть его в режиме запрета доступа других программ к этому файлу. Значит, прежде чем открывать данный *.txt, нужно проверить, а есть ли у моей программы право его открывать для редактирования?
phomm
Думаю подойдёт так
var fs : TFileStream;
...
fs := TFileStream.Create('путь_до_файла', fmOpenReadWrite or fmShareExclusive);
//работаем с файлом, см. справку по TFileStream по конкретным командам
freeandnil(fs);
Человек_Борща
Далее делайте полную копию исходного документа во временную папку ну и работайте с ним. Приоритет будет за вами.
notepad++ так и делает. Исходный док-нт бросает во временную папку и следит за исходным. Если исходный изменился, предлагает юзеру перезагрузить документ, или продолжить изменять тот что во временной папке лежит.
Если вы открыти файл через memo или RichEdit то другая программа сможет только открыть файл НО не изменить его.
При условии что спользуется класс Tstrings(а в этих комонентах он точно есть), видим его LoadFromFile:
procedure TStrings.LoadFromFile(const FileName: string);
var
Stream: TStream;
begin
Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)