Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 2
Всего онлайн: 2
Зарегистрировано юзеров: 6358
Комментариев на сайте: 645
Новый юзер: Realtyvaday



Последние комментарии
c
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
GZip псевдоархив, на мой вопрос тоже не отвечают, как распаковать отдельные файлы/папки...
Pingitrus прокомментировал "Урок 71 - Работа с сжатыми файлами":
Есть еще кто нибудь живой на этом сайте, кто сможет помочь? Так то все работает, zip и rar распаковывает, но у меня есть файл dat который сжат GZip, почему то его не удается распаковать или так не получится так как этот файл не является архивом или является?)) пишет ошибку что неверная функция



Мы в соцсетях
c
Delphi
Урок 22 - Принцип работы с файлами

  В этом уроке изучим принцип работы с файлами.

   Давайте ознакомимся с набором функции необходимых для работы.

   function FileCreate(const FileName: String): integer;

   Создаёт файл в указанном пути FileName и возвращает индекс созданного файла. В случае ошибки при создании, она вернет -1.

   function FileOpen(const FileName: String; Mode: LongWord): integer;

   Открывает файл в заданном пути FileName с параметрами Mode, она также в случае ошибки вернет -1. Параметр Mode может принимать одно из следующих значений:

  • fmOpenRead - открытие только на чтение
  • fmOpenWrite - открытие только на запись
  • fmOpenReadWrite - открытие и на чтение и на запись


   function FileRead(handle: integer; var Buffer; Count: integer): integer;

   Читает открытый или созданный файл. Вместо пути она принимает индекс файла handle. Buffer - куда будет записано содержимое. Count - количество байтов которое нужно прочитать.

   function FileWrite(handle: integer; var Buffer; Count: integer): integer;

   Аналогичная функция чтению, но вместо чтения она записывает содержимое размером Count (в байтах) переменной Buffer в файл.

   function FileClose(handle: integer);

   Закрывает файл, чтобы другие программы тоже имели доступ к нему.

   function FileSearch(const Name, DirList: string): String;

   Осуществляет поиск файла Name в одной или более папках DirList, отделённых друг от друга точкой с запятой. Необходимо указывать не только название папки, но и полный адрес этой папки.
Имя файла может быть, как файловым именем, так и полным адресом файла.
Если файл будет найден, то возвращается полный адрес файла включая имя файла, в случае не нахождения искомого файла будет возвращена пустая строка.

   ПРЕДУПРЕЖДЕНИЕ: ВСЕГДА сначала поиск будет проходить в текущей папке, независимо от перечисленных директорий. Если файл обнаруживается там, то путь файла возращён не будет, а только имя файла.

   function FileSeek(Handle, Offset, Origin: Integer): Integer;

   Устанавливает позицию для чтения и записи (в байтах) для открытого файла и возвращает новую позицию в файле (байтовое смещение от начала файла). В ниже перечислены возможные значения параметра Origin. Чтобы определить текущую позицию в файле, передайте Origin значение File_Current и Offset, равное нулю.
  • File_Begin (0) - Смещение (offset) рассчитывается относительно начала файла
  • File_Current (1) - Смещение рассчитывается относительно текущей позиции в файле
  • File_End (2) - Смещение рассчитывается относительно конца файла


   Все с теорией мы покончили, теперь что-нибудь считаем. вытащим на форму 2 кнопки и Memo и напишем в обработчике события 1 кнопки OnClick следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
  F: integer;  //наш файл
  Str: string[8]; //Строка которую мы будем писать
begin
  F:= FileCreate('D:/1.txt'); //Создаём файл 
  FileWrite(F, '123456789', SizeOf(str)); //Записываем в него строку "123456789"
  FileClose(F); //Закрываем файл
end;
   функция SizeOf возвращает размер типа или самой переменно в байтах, т.к. заранее размер строки неизвестен. скомпилируем и нажмем кнопочку.

Результат


   Теперь прочитаем это. создаём обработчик события 2 кнопки OnClick и пишем код:
procedure TForm1.Button2Click(Sender: TObject);
var
  F: integer;  //наш файл
  Str: string[8]; //Строка в которую мы сохранять
begin
  F:= FileOpen('D:/MyGame/1.txt', fmOpenRead); //открываем файл на чтение
  FileRead(F, Str, SizeOf(str));  //читаем 
  Memo1.Text:=Str;  //присваиваем memo нашу строку
  FileClose(F);  //Закрываем файл
end;


Результат


Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 7 Апреля 2013
Просмотров: 19581

Урок 21 - Знакомство с компонентами (часть 12/12) Урок 23 - Функции для работы с мышью

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил: Life Jumb [Новичок] Дата: 2013-08-25
пробовал другие значения не получилось!




аватар Добавил(а): eltgm [Новичок] Дата: 2014-06-18
не понял урок(и примеры не заработали




аватар Добавил: spyman_xx [Новичок] Дата: 2014-10-07




аватар Добавил(а): Siruza [Новичок] Дата: 2015-06-15
Str: string[8]; а что означает 8 в квадратных скобках?




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2015-06-21
var s: string[n]; n - максимально возможная длина строки - целое число в диапазоне 1..255. Если этот параметр опущен, то по умолчанию он принимается равным 255.




аватар Добавил(а): N1Tron1X [Новичок] Дата: 2015-07-13
Запись в текстовик 123456789 - получается ересь) При длине строки 8 пишется не вся строка тк между цифрами вставляются пробелы, при длине строки 90 (взял просто так) - после цифр следуют символы Г Ј Фј 4 мБ ј] ґ0] °л@ 0] Hд@ ј0] p6A




аватар Добавил(а): N1Tron1X [Новичок] Дата: 2015-07-13
Подскажите куда копать. Кодировка не та?




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2015-07-20
Функции, представленные в данном уроке записывают в файл бинарные значения и предназначены для записи и чтения в делфи. То есть если открыть такие файлы в блокноте - получается "ересь". Если хотите открывать текст в блокноте, используйте функции Assing, Reset и Writeln.




аватар Добавил(а): beka21 [Новичок] Дата: 2016-01-26
Admin Where is Link For Next Page....




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2016-02-07
beka21, fixed




аватар Добавил(а): Byka [Новичок] Дата: 2017-12-16
Уважаемые гуру перелопатил весь интернет , но так и не нашел ответа. Если возможно , то сделайте урок по работе в делфи с каталогами и папками. Задача 1 есть каталог( например диск:папка 1 папка 2user) с вложенными папками и конечная папка у пользователей имеет разные имена и может находиться на разных дисках Простая задача 1 Скопировать содержание конечной папки 2 Создать в директории где лежит программа новый каталог и каждый раз при копировании надо добавлять новую папку в созданный каталог с порядковым номером + название , которое вводит пользователь 3 получить листинг папок из каталога , созданным программой и при выборе папки надо заменить содержимое конечной папки из которой копировали , на содержимое выбранной папки. Задача решается командными файлами элементарно, но хочется создать приложение.... содержимое конечной папки 3 файла - 2 текстовых *.txt и один *.rf В делфи нет встроенной функции для работы с папками нет и уроков в интернете и все уроки сводятся к копированию файлов или копированию символов из строк... Помогите пожалуйста))




аватар Добавил(а): ilya5338k [Новичок] Дата: 2018-07-05
так и не понял что возвращают функции FileOpen и FileCreate