- Создание и работа с текстовыми файлами в Delphi
- Прикрепление файла
- Операции с файлом
- Закрыть файл
- Примеры работы с текстовыми файлами в Delphi
- Delphi
- Наши проекты
- Урок 6: Базовый текстовый редактор
- Реализация переноса
- Реализация функции «Сохранить как»
- Реализация функции «Сохранить»
- Реализация функции «Открыть»
- Реализация функции «Создать»
- Реализация функций в меню «Правка»
- Реализация функций в меню «Шрифт»
- Конец близок.
- Урок 22. Как работают файлы
- Delphi как открыть блокнот
Создание и работа с текстовыми файлами в Delphi
Когда речь идет о работе с программой с текстовым файлом, мы имеем в виду процедуры ввода данных из файла в программу или, , написание этого данные в файл с помощью программы. Для текстового файла допустимы простые манипуляции с файлами без каких-либо специальных дополнительных механизмов, используемых для работы со специализированными файлами, таких как загрузка данных из Excel или работа с программой базы данных. Конечно, Delphi может работать с файлами с помощью компонентов. Однако в данной статье рассматривается механизм работы непосредственно с текстовым файлом без использования других компонентов.
В целом работа с файлом состоит из следующих шагов:
1. подключение к файл — подключение к внешнему файлу, указание режима подключения;
2. выполнение операций записи или чтения из файла;
3. завершение файла.
Прикрепление файла
Для связи программы с файлом используется специальная переменная — «Файловая переменная». Она объявляется так же, как и любая переменная в Delphi. Тип этой переменной может быть File для записываемых файлов (хранилище данных определенного типа) или может указывать TextFile , что будет означать тип обычного текстового файла. Объявление переменной:
Исполняемый код программы прикреплен к внешнему файлу:
Команда AssignFile , подключит файловую переменную к внешнему файлу. Второй параметр указывает адрес файла. Можно установить относительную или абсолютную. Если ввести только имя файла, программа попытается найти его в той же директории, где он находится. Абсолютный путь вводится от корневого диска:
Использование относительного каталога позволяет не привязываться к конкретным дискам и адресам. Например:
После установления соединения выполняется процедура, устанавливающая файловый режим. Это в основном режим чтения или записи. Эти режимы назначаются процедурами Reset() (для чтения) и rewrite() (для записи):
* Для команды Rewrite() , следует отметить, что при запуске он либо создаст файл, указанный в переменной file, либо, если он уже существует, снова перезапишет файл и удалит старый без предупреждения.
Любую из приведенных выше команд можно использовать без AssignFile() . Для этого вам нужно всего лишь указать путь к файлу в качестве второго параметра. Так он сразу привязывает файл к файловой переменной и присваивает этому файлу режим работы:
Операции с файлом
Чтобы читать из файла, необходимо установить режим чтения и использовать команду Readln() , которая вставляет строку из файла в строковую переменную. Затем вы можете делать с этим изменением все, что хотите.
Оператор цикла обычно используется для чтения всех строк файла. Функция EOF() (конец файла) используется для определения того, что файл закончился. Это дает вам цикл, в котором все строки файла вводятся одна за другой в строковую переменную и заканчиваются после конца файла:
Для записи установите файл в режим записи и используйте команду Writeln() для записи строки после строка.
Закрыть файл
После окончания работы с файлами, особенно записи в них данных, она должна корректно заканчиваться переменной file. Это делается для сохранения внесенных в файл изменений.
Примеры работы с текстовыми файлами в Delphi
Загрузить одиночное значение из файла в переменную:
Загрузить все строки файла в компонент Memo:
Обратите внимание, что для этой задачи проще использовать собственную команду компонента Memo LoadFromFile() .
Записать строку в file:
Записать все строки компонента Memo в текстовый файл:
Что касается чтения файла в Memo, то здесь есть специальная команда:
Шрифт
Delphi
Наши проекты
Урок 6: Базовый текстовый редактор
Ставим TMemo и TMainMenu в виде . Свойству Align устанавливаем значение alClient , чтобы компонент занимал все свободное пространство формы. Установите для свойства ScrollBars значение ssBoth и WordWrap для False . И удалите текст по умолчанию, введенный в Memo1, удалив этот текст из свойства Lines .
Дважды щелкните MainMenu1 — появится окно. Теперь создадим меню «Файл». Содержит пункты: «Создать», «Открыть», «Сохранить», «Сохранить как.», разделитель (символ «-») и «Конец»
Установите сочетания клавиш, как показано на рис . 1 . Клавиши быстрого доступа задаются в свойстве Ярлык
Рис. 1 – Меню «Файл»
Аналогичным образом создаем меню «Правка»:
Рис. 2 — Меню «Правка»
Аналогично создаем меню «Формат»:
Рис. 3 — Меню «Формат»
Итак, приступим. Окно редактора меню нам больше не нужно, его можно закрыть. У нас уже есть меню в форме. Он падает при нажатии, в целом почти работает. Осталось только написать код, который будет выполняться при выборе чего-либо в меню. Щелкните меню «Файл» и выберите «Готово».
Рис. 4. Создание события onClick после нажатия
появится окно редактора кода в меню «Выход» с подготовленной процедурой. Пишем:
Обратите внимание, что Close и Form1.Close — это одно и то же. Поскольку форма является родителем, имя родителя можно опустить.
Теперь программа завершит работу после выбора меню «Выход».
Реализация переноса
Из «Формат » выбираем «Перенос слов»:
Давайте разберемся, что мы делаем: Если режим переноса слов уже установлен, мы убираем его и ставим галочку на N14. И наоборот.
Реализация функции «Сохранить как»
Для сохранения документа нам понадобится диалоговое окно. Воспользуемся TSaveDialog во вкладке Диалоги . Поместим его в форме.Настроим фильтр,то есть файлы которые этот диалог будет отображать.Нам нужны *.txt,то есть текстовые документы.Для этого нужно найти свойство Фильтр и нажмите на кнопку
.Появится окно.Заполните его как показано на рис. .5 .
Рис. 5 — Редактор фильтров
Теперь измените свойство DefaultExt на *.txt . Это расширение будет добавлено к файлу.
Давайте создадим процедуру для сохранения файла. Напишем этот код сразу после .
Затем выберите «Файл» в меню -> «Сохранить как. «. Здесь пишем:
Что здесь делается и как это работает? Очень простой! Когда пользователь выбирает пункт меню «Сохранить как», вызывается описанная ранее процедура «Сохранить как». Теперь давайте посмотрим на процедуру Сохранить как. Когда функция Execute вызывается в TSaveDialog , появляется диалоговое окно Save, и если пользователь нажимает кнопку Save, функция Execute возвращает True в противном случае False . При возврате True будет выполнена процедура SaveToFile , т.е. сохранение файла. SaveDialog1.FileName хранит путь к файлу, на который указывает пользователь в диалоговом окне.
Я ввел глобальную переменную FileWork . Сохраняет путь к файлу, с которым работает пользователь. Это необходимо для реализации функции «Файл» -> «Экономить деньги». Обязательно объявите его в разделе Var перед реализацией . Должно быть так:
Реализация функции «Сохранить»
Выберите «Файл» —> «Экономить деньги». И пишем:
Если пользователь уже сохранил файл, то в FileWork что-то сохранится, а не «пустое» ни в коем случае. Если » сохраняется, то есть ничего не сохраняется, мы вызываем SaveAs. Появится только диалоговое окно Сохранить. Если переменная FileWork не пуста, сохраните файл по пути, указанному в FileWork.
Реализация функции «Открыть»
Помимо TSaveDialog , есть TOpenDialog . А если вы немного знаете английский, то уже поймете, что этот компонент для открытия файлов.
Расположите этот компонент на форме и измените свойство Filter так же, как в SaveDialog1.
Вообще, TSaveDialog и TOpenDialog очень похожи. Диалоговое окно открытия также вызывается командой Execute , которая возвращает True , если пользователь хочет открыть файл.
Щелкните «Файл» — > «ОТКРЫТЫМ». Пишем:
Запускаем программу F9 и пробуем. Если все сделано правильно, все должно работать.
Реализация функции «Создать»
Нажмите «Файл» —> «Создавать». Пишем:
Тут все понятно и без объяснений. Но все же поясню: первая строчка удаляет FileWork, то есть программа не будет знать, что мы работаем с файлом. Вторая строка удаляет Memo1.
Реализация функций в меню «Правка»
Щелчок меню «Вырезать»:
Щелчок меню «Копировать»:
Щелчок по меню «Вставка»:
Реализация функций в меню «Шрифт»
Нужен еще один компонент — TFontDialog . Функция для вызова такая же, как у TOpenDialog и TSaveDialog — Execute . Создайте событие, щелкнув меню «Источник».
Если пользователь применил изменения, Свойства шрифта Memo1 назначается настройка шрифта, выбранная пользователем. Они хранятся в свойстве Font FontDialog1.
Конец близок.
Основная часть программы написана. Осталось совсем немного. Нам нужно активировать форму, чтобы ее свойства появились в инспекторе объектов, но поскольку Memo1 охватывает всю форму, мы не можем этого сделать. Есть несколько вариантов. Вы можете просто выделить форму в Object TreeView. Либо выберите Memo1, затем, удерживая клавишу Shift, снова нажмите Memo1.
Итак, вы активировали форму. Изменим заголовок окна: в свойстве Заголовок напишем «Блокнот». Измените свойство Position на poScreenCenter , чтобы форма отображалась в центре экрана.
И, наконец, добавьте модуль XPMan в список модулей (раздел использования ). Это должно выглядеть примерно так:
Этот модуль прикрепляет XMManifest к приложению, т.е. если у вас установлена XP, то все компоненты станут в стиле XP, а если у вас Vista, то они станут в стиле Vista, а не как на Win98 или Win2000. Не стесняйтесь экспериментировать
Загрузите исходный код программы
Урок 7: Изучение TImage, TGroupBox, TRAdioGroup
Обсуждение на форуме
Источник
Урок 22. Как работают файлы
В этом уроке мы научимся работать с файлами.
Ознакомиться с набором необходимых для работы функций.
function FileCreate(const FileName: String): integer;
Создает файл по указанному пути Имя file и возвращает индекс созданного файла. Возвращает -1 при ошибке создания.
function FileOpen(const FileName: String; Mode: LongWord): integer;
Открывает файл по указанному пути Имя файла с параметрами Режим , также возвращает -1 при ошибке. Параметр Mode может принимать одно из следующих значений:
- fmOpenRead — открыт для чтения
- fmOpenWrite — открыт для записи
- fmOpenReadWrite — открыть для чтения и записи
function FileRead(handle: integer; var Buffer; Count: integer): integer;
Читает открытый или созданный файл. Вместо пути индекс файла принимает дескриптор . Буфер : куда будет записан контент. Count : количество байтов для чтения.
function FileWrite(handler: integer; var Buffer; Count: integer): integer;
Аналогична функции чтения, но вместо чтения она записывает в файл содержимое размером Число (в байтах) переменной Буфер .
функция FileClose(обработчик: целое число);
Закрывает файл, чтобы другие программы могли получить к нему доступ.
function FileSearch(const Name, DirList: string): String;
Поиск файла Имя в одной или нескольких папках DirList , разделенных точкой с запятой. Необходимо ввести не только название папки, но и полный адрес этой папки.
Имя файла может быть именем файла или полным адресом файла.
Если это файл найден, будет возвращен полный адрес файла, включая имя файла; если искомый файл не найден, будет возвращена пустая строка.
ПРЕДУПРЕЖДЕНИЕ: Текущая папка ВСЕГДА будет искаться первой, независимо от указанных каталогов. Если файл найден там, путь к файлу не будет возвращен, только имя файла.
function FileSeek(Handle, Offset, Origin: Integer): Integer;
Устанавливает позицию чтения/записи (в байтах) открытого файла и возвращает новую позицию в файле (смещение в байтах от начала файла). Возможные значения параметра Source перечислены ниже. Чтобы определить текущую позицию в файле, передайте File_Current в Origin и Offset в ноль.
- File_Begin (0) : смещение рассчитывается относительно начала файла
- File_Current (1) : смещение рассчитывается относительно к текущей позиции в файле
- File_End (2) : смещение вычисляется относительно конца файла
Теперь мы Закончили с теорией, кое-что посчитаем. убрать в форме 2 кнопки и Memo и написать в обработчике события кнопки 1 OnClick следующий код: функция SizeOf возвращает размер типа или самой переменной в байтах, т.к. размер строки заранее неизвестен. скомпилируйте и нажмите кнопку.
Теперь давайте прочитаем это. создайте обработчик события для кнопки 2 OnClick и напишите код:
Источник
Delphi как открыть блокнот
Создание блокнота
1. Сегодня мы будем создавать простой блокнот в Delphi 7. Для этого открываем Delphi 7, вставляем его на форму:
1 шт. Memo (из вкладки Standard),
1 шт. MainMenu (из вкладки Standard),
1 шт. StatusBar (из вкладки Win 32),
1 шт. XPManifest (из вкладки Win32),
1 шт. Открыть диалог (из вкладки Диалог),
1 шт. SaveDialog (из вкладки Dialog),
1 шт. FontDialog (из вкладки Dialog),
2. Дважды щелкните компонент в форме MainMenu1, появится окно. Вводим как показано на картинке:
3. Удаляем параметр lines в Memo. Мы присваиваем значение alClient параметру align.
Теперь приступим к кодированию:
-Выполнить нажмите MainMenu на Open и напишите:
Если OpenDialog1.Execute=true, то
Memo1.Lines.LoadFromFile(OpenDialog1.FileName); //Открыть текст в Memo1
-Нажмите MainMenu на Save и введите:
If SaveDialog1.Execute=true then
Memo1.Lines.SaveToFile(SaveDialog1.FileName ) ; // Сохранить текст в Memo1
-Нажмите MainMenu при выходе и напишите:
Form1.Close; //Закройте Блокнот
-Нажмите MainMenu на Undo и введите:
Memo1.Undo; //Отменить изменения
-Нажмите Копировать в главном меню и введите:
Memo1.CopyToClipboard; //Вставить текст из буфера обмена
Нажмите Вставить в главном меню и введите:
Memo1.PasteFromClipboard; //Скопируйте текст в буфер обмена
-Нажмите на MainMenu под шрифтом и напишите:
Если FontDialog1.Execute=true, то
Memo1.Font:=FontDialog1.Font; //Memo1.Font принимает все значения FontDialog1.Font
Теперь создадим новую форму (Файл->Создать->Форма). Назовем его О. , фон будет белым. Напишите о программе, имени создателя, адресе электронной почты и т. д. Затем перейдите в редактор кода Delphi 7 и введите use unit2; между реализацией и <$R *.dfm>.
-Затем нажмите О программе в главном меню. и напишите:
Form2:=TForm2.create(Application);
Форма2.Показать; //Show Form2
— Дважды щелкните строку состояния, и появится окно.
— Щелкните желтую панель и назовите ее «0» (без кавычек). Дважды щелкните Memo1 и введите:
Шрифт