Неверов Евгений Викторович
QR-код
Меню сайта
Категории раздела
Программирование на языке Паскаль [26]
В данной категории представлены новые функции, созданные на языке Паскаль, которые могут пригодиться при написании своих программ
Программирование на Delphi [19]
В данной категории представлены полезные подпрограммы, которые могут пригодиться при написании своих программ, а также рассматриваются примеры готовых проектов, создаваемых в среде программирования Delphi
Программирование на HTML [1]
В данной категории рассматриваются примеры готовых проектов, создаваемых на языке HTML
Мои программы [1]
Описание разработанных автором программ.
Online-программы [2]
Прочее [42]
Свободная тематика
Мини-чат
200
Наш опрос
Существуют ли инопланетяне?
Всего ответов: 11
Статистика

Онлайн всего: 3
Гостей: 3
Пользователей: 0

Безопасное открытие и закрытие файла

1. Открытие файла

function slLoadFromFile(var sl: TStringList; f: string): boolean;
const MaxBufSize = $F000;
var H, Count: integer;
    Buffer: PAnsiChar;
    Text: AnsiString;
begin
   Result:=false;
   sl.Clear;
   H:=FileOpen(f, fmShareDenyNone);
   if H<0 then
      Exit;
   Result:=true;
   Text:='';
   FileSeek(H, 0, 0);
   GetMem(Buffer, MaxBufSize);
   repeat
      Count:=FileRead(H, Buffer^, MaxBufSize);
      if Count>0 then
         Text:=Text+Copy(Buffer, 1, Count);
   until Count<=0;
   FreeMem(Buffer, MaxBufSize);
   FileClose(H);
   sl.Text:=String(Text);
end;

где:

  • sl – переменная типа TStringList, в которую загружают содержимое файла f;
  • f – полное имя открываемого файла.

2. Сохранение файла

function slSaveToFile(var sl: TStringList; f: string): boolean;
const MaxBufSize = $F000;
var H, Count: integer;
    Buffer: PAnsiChar;
    Text: AnsiString;
begin
   Result:=false;
   H:=FileCreate(f);
   if H<0 then
      Exit;
   Result:=true;
   Text:=AnsiString(sl.Text);
   FileSeek(H, 0, 0);
   repeat
      Buffer:=PAnsiChar(Copy(Text, 1, MaxBufSize));
      Count:=Length(Buffer);
      if Count>0 then
      begin
         FileWrite(H, Buffer^, Count);
         Text:=Copy(Text, Count+1, Length(Text));
      end;
   until Count<=0;
   FileClose(H);
end;

где:

  • sl – переменная типа TStringList, из которой выгружают содержимое файла f;
  • f – полное имя сохраняемого файла.

3. Пример

Добавим на форму кнопку Button1 и компонент Memo1. При нажатии на данную кнопку открывается файл, его содержимое загружается в компонент Memo1 (он служит в качестве блокнота), затем сохраняется в новом файле. Мы видим, что размеры файла совпадают (скопировалось без потери данных).

procedure TForm1.Button1Click(Sender: TObject);
const f1 = 'E:\Delphi.txt';
      f2 = 'E:\Delphi2.txt';
var sl: TStringList;
begin
   sl:=TStringList.Create;
   slLoadFromFile(sl, f1);
   Memo1.Text:=sl.Text;
   slSaveToFile(sl, f2);
   sl.Free;
end;
Категория: Программирование на Delphi | Добавил: newerow1989 |
Просмотров: 887 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Код *:
Вход на сайт
Поиск
Друзья сайта
Заработок в Интернете
Для начала необходим Электронный PAYEER® кошелек!
Copyright MyCorp © 2025
Версия для мобильных устройств. Яндекс.Метрика Анализ сайта Проверить мой сайт на ScamAdviser.com