[ Свежие темы · Новости · Купить Premium+ · Акции · Правила · Поиск · RSS ]
  • Страница 1 из 1
  • 1
[Delphi] Урок: Компоненты Для Работы с Файлами в Delphi
worldbest verific
Дата: Четверг, 31.10.2013, 21:39 | Сообщение # 1
Сообщений: 65
Работа с файлами важная вещь в любом языке программирования. Работа с файлами в Delphi позволяет считывать, сохранять информацию, и выполнять другие действия с файлами. В Delphi поддерживаются все операции с файлами - создание, поиск, чтение и запись, переименование как файлов, так и к директорий. В Delphi существует несколько способов работы с файлами. 

Для "лирического" вступления нужно упомянуть компоненты Delphi, которые умеют работать с файлами. Они читают и сохраняют своё содержимое, строки типа String, в файл текстового формата. Это компоненты ListBox, ComboBox и Memo, расположенные на первой же вкладке палитры компонентов. 

Каждая строка компонентов ListBox и ComboBox является объектом Items, а Memo - Lines, где i - номер строки, который отсчитывается от нуля. Добавление строк в компоненты выполняется методами Add и Insert: 
http://www.delphi-manual.ru/ListCombo.JPG 
begin 
Memo1.Lines.Add('Первая строка'); 
ComboBox1.Items.Add('Первая строка'); 
ComboBox1.Items.Add('Вторая строка'); 
ListBox1.Items.Add('Первая строка'); 
ListBox1.Items.Add('Вторая строка'); 
end ; 

Метод Add добавляет новую строку в конец. Метод Insert имеет дополнительный параметр, указывающий, после какой строки разместить новую строку. Доступ к строкам осуществляется так: 

ComboBox1.Items[0] := 'Первая строка изменилась' ; 
ListBox1.Items[1] := 'Вторая строка изменилась' ; 

У компонента ComboBox дополнительно есть свойство Text, где (как и у компонента Edit) находится вводимый текст: 

ComboBox1.Text := ' Вводимый текст '; 

На выделенную в данный момент строку компонента ComboBox указывает свойство ItemIndex типа Integer, то есть это номер выделенной строки. Следовательно, получить саму выделенную строку компонента ComboBox можно следующей конструкцией: 

S:=ComboBox1.Items[ComboBox1.ItemIndex]; 

или, пользуясь оператором присоединения 

With ComboBox1 do 
S:=Items[ItemIndex]


Вот как по нажатию клавиши Enter можно заносить в этот компонент вводимую в строку информацию и удалять нажатием Escape: 
Выделите на Форме ComboBox и перейдите в Инспектор объектов, на вкладку Events. Щёлкните дважды по обработчику OnKeyPress. Система Delphi создаст заготовку обработчика. Напишите: 

begin 
if Key=#13 then 
ComboBox1.Items.Add(ComboBox1.Text); 
if Key=#27 then 
ComboBox1.Items.Delete(ComboBox1.Items.Count-1); 
end ; 

Key - определённая в этом обработчике переменная, содержащая код нажатой клавиши, #13 и #27 - коды клавиш Enter и Escape соответственно. Items.Count - количество содержащихся в компоненте строк. Так как отсчёт строк идёт от нуля, мы отнимаем единицу. После очередного удаления количество строк меняется, таким образом, Items.Count-1 всегда указывает на последнюю строку. Последовательно нажимая Escape, мы можем удалить все строки. Командой 
ComboBox1.Items.Delete(0); 
можно добиться того же эффекта, только удаляться будут первые строки. Впрочем, чтобы стереть всё сразу, есть метод Clear! 

Ну а теперь собственно о сохранении содержимого в файл. Для этого выполните команду 

ListBox1.Items.SaveToFile(' Имя_файла.txt ') ; 

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

ListBox1.Items.LoadFromFile(' Имя_файла.txt ') ; 

Что делать, если в своей программе мы не работаем с компонентами Combobox, ListBox или Memo, а сохранять информацию нужно? Берём один из компонентов и делаем его невидимым, для этого в Инспекторе Объектов ставим в свойство Visible значение False. Функциональность его от этого не изменится! 

Последний штрих - создадим программу, сохраняющую своё положение на экране в момент закрытия и там же открывающуюся. Нам нужно сохранить два параметра - значения свойств Формы Left и Top, это расстояние от левого и верхнего краёв экрана соответственно. Значения эти выражаются в пикселах и имеют тип Integer. Необходимо перевести эти числа в строку (тип String) с помощью оператора IntToStr. Итак, разместите на Форме невидимый ListBox, щёлкните по пустому месту Формы, чтобы её свйства появились в Инспекторе объектов, и перейдите на вкладку Events. Щёлкните по обработчику OnClose и в созданной заготовке напишите: 

begin 
ListBox1.Items.Clear; 
ListBox1.Items.Add(IntToStr(Form1.Left)); 
ListBox1.Items.Add(IntToStr(Form1.Top)); 
ListBox1.Items.SaveToFile('MyFormPos.txt'); 
end ; 

Этот обработчик сохраняет положение Формы на экране. Теперь напишем обработчик, помещающий Форму на прежнее место при старте программы. Создайте заготовку обработчика события OnCreate. Это событие происходит в момент "создания" Формы операционной системой. В этот момент и нужно присваивать ей необходимые свойства. Пишите: 

begin 
if FileExists('MyFormPos.txt') then 
begin 
ListBox1.Items.LoadFromFile('MyFormPos.txt'); 
Form1.Left:=StrToInt(ListBox1.Items[0]); 
Form1.Top:=StrToInt(ListBox1.Items[1]); 
end ; 
end ; 

В первой строке происходит проверка на существование файла, ведь если его не будет, произойдёт ошибка. Впрочем, программа после выдачи предупреждения откроется в том месте, где была на этапе проектирования, а при закрытии нужный файл будет воссоздан! 
Затем в логических скобках begin / end содержится сам код, который будет выполнен только приналичии файла MyFormPos.txt в папке с программой, так как используется относительный путь. Можно указать конкретное местоположение, например, C:\Program Files\MyProg\MyFormPos.txt. 

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

Конечно, профессиональные программы сохраняют своё положение в Реестре Windows. Но всему своё время.
  • Страница 1 из 1
  • 1
Поиск: