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

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 3
Всего онлайн: 3
Зарегистрировано юзеров: 6619
Комментариев на сайте: 650
Новый юзер: Dysonetn



Последние комментарии
c
dealrattKi прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
Это действительно радует меня. --- Бесподобное сообщение скачать fifa, скачать фифа а также [url=http://15fifa.ru/novosti-fifa-15]fifa 15 последние новости[/url] скачать фифа
intatryadebra прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
Revival RO is best free ro populair ragnarok online private server founded in 2017 2018. Revival pvp big free Ragnarok server is an online exciting free MMORPG called ragnarok online, it a fun server for MMORPG gamers in ASIA. This is a top 10 ragnarok online private server thats high on the list and top ranking with massive players online. We have many players from Asia like Malaysia, Indonesia, Philippines, Thailand, Singapore, China, Hong Kong All these players are here to play free private ragnarok online server and battle players all around the world. They want to collect the best items and gear to be strongest in War of Emperium, War of Emperium are guild wars in this free RO Server. You can play this game on android phone or tablet or pc client. Enjoy And have fun. ragnarok online server http://bit.ly/2tKyawS

Урок 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
Просмотров: 20642

Урок 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