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

Поиск
L



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



Последние комментарии
c
Cmertb06 прокомментировал "Урок 1 - Инициализация OpenGL":
Возможно ли рисовать на экране? Например у Screen.Monitors[0] есть свойство Handle?
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
uses ...sevenzip, ... function ProgressCallback(sender: Pointer; total: boolean; value: int64): HRESULT; stdcall; begin if total then Form1.sprgrsbr1.Max:= value else Form1.sprgrsbr1.Position:= value; Result:= S_OK; end; function Decompress(FileName, DestDir, ArcFname: String; ArcDir: Boolean ): Boolean; var i: Integer; ItP: string; items: array[1..11] of Cardinal; sprgrsbr1: TsProgressBar; begin Result:= False; Application.ProcessMessages; try with CreateInArchive(CLSID_CFormat7z) do begin OpenFile(FileName); SetProgressCallback(sprgrsbr1, ProgressCallback); for i:= 1 to NumberOfItems - 1 do if not ItemIsFolder[i] then //ExtractItem(items[i], Steam, False); - как ей пользоваться в душе не понимаю... ExtractTo(DestDir); end; finally Result:= True; end; end;



Мы в соцсетях
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
Просмотров: 19934

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