rss
twitter
  •  

Склеивание файлов. BlockRead, BlockWrite. Delphi

В английской раскладке: crktbdfybt afqkjd. blockread, blockwrite. delphi
В русской раскладке: склеивание файловю идщслкуфвб идщслцкшеую вудзрш
| Рубрика Программирование |
761 | Оцените статью
(Нет оценок)
Loading ... Loading ...

0

Разберем простейший пример работы с нетипизированными файлами в Delphi. А именно попробуем склеить несколько файлов.

Для начала создадим интерфейс для нашей программы.

Свяжем PopupMenu1 с FileList. И для  PopupMenu1 создадим кнопки.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Добавить файл
procedure TForm1.AddFileToListClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
    FileList.Items.Add(OpenDialog1.FileName);
end;

// Удалить файл
procedure TForm1.DeleteFileFromListClick(Sender: TObject);
begin
  FileList.DeleteSelected;
end;

// Заменить файл
procedure TForm1.ReplaceFileFromListClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
    FileList.Items[FileList.ItemIndex]:=OpenDialog1.FileName;
end;

На функции склеивания файлов остановимся и разберем её более тщательно.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.GlueFilesClick(Sender: TObject);
var
  SaveFile, OpenFile    : File;          // Файл для записи и текущего файла для чтения.
  Bytes   : Array[0..4096] of Byte;  // Массив байтов, количество элементов кратно кластеру.
  I,  Count : Integer;                    // Счетчик файлов и переменная для количества считанных байтов.
begin
  if SaveDialog1.Execute then begin   // Запускаем диалог
    AssignFile(SaveFile, SaveDialog1.FileName);  // Связываем файл для записи
    ReWrite(SaveFile, 1);       // Открываем файл для записи
    for I := 0 to FileList.Count - 1 do    // Пробегаем по файлам из списка
    begin
      AssignFile(OpenFile, FileList.Items[i]); // Связываем файл для чтения
      Reset(OpenFile, 1);  // Открываем файл для чтения
      repeat
        BlockRead(OpenFile, Bytes, 4096, Count);  // Считываем 4КБ в массив Bytes и записываем в Count количество реально считанных байтов.
        BlockWrite(SaveFile, Bytes, Count);  // Записываем считанные Count байтов
      until Count=0; // Как только писать нечего выходим из цикла
      CloseFile(OpenFile);  // Закрываем текущий файл для чтения.
    end;
    CloseFile(SaveFile);  // Закрываем текущий файл для записи.
  end;
end;

Даже не знаю где это может понадобиться, но помогает чуть лучше разобраться с нетипизированными файлами, хотя то только начинающему.

Это интересно...

Метки: , , , ,

Что такое CSS - Подпишись на RSS!

Комментирование продлевает жизнь!