Vb6 примери за операционен код на менюто на файловата система. Четене и запис в текстов файл

Windows

Цел на работата: Изучаване и използване на езикови оператори на VB 6 за работа с файлове различни видове: последователни (текстови) файлове, файлове с произволен достъп, двоични файлове. Проучване и използване на инструмента често срещаниДиалогза отваряне и запазване на файлове, избор на шрифтове и цветове и използване на обекта клипбордаза съхраняване на текстови фрагменти, като използвате примера за създаване на прост текстов редактор.

Контролни въпроси:

1. Какви са начините за отваряне на текстов файл? Как да затворите текст и всякакви други отворете файла?

2. Как се записват данни в текстов файл с възможност за запис? Каква е разликата между операторите Write и Print?

3. Как се четат данни от отворен за четене текстов файл? Каква е разликата между операторите Input и Line Input? Каква функция може да се използва за четене на даден брой знаци от файл? Как да прочета всички символи на файл?

4. Какво е потребителски тип данни и как се използва тази концепция при работа с файлове с произволен достъп ( раф)?

5. С какви оператори от файла рафзаписите се четат и във файла рафсе пишат нови записи?

6. За каква цел се определя и използва индексът при работа с файл раф?

7. Какви са характеристиките на използването на двоични файлове? Как се отварят? Как се извършва четенето от двоичен файл и записът в двоичен файл?

8. Как може да се приложи контролът често срещаниДиалогда заредите съдържанието на текстов файл в текстово поле? Как да използвам същата контрола за запазване на редактирания текст в текстов файл?

9. Как можете да приложите контрола често срещаниДиалогза изтегляне на съдържанието на файла rtfв полето Богаттекстово поле? Как да използвате същата контрола, за да запазите редактирания текст във файл rtf?

10. Как можете да приложите контрола често срещаниДиалогза да промените стойностите на параметрите на шрифта и да промените цвета на текста в прозореца текстово поле(или избрана част от текст в прозорец Богаттекстово поле)?

Пример 7.1. Помислете за приложение, което демонстрира писане в (и четене от текстов файл) на „данни за служител“ – низове, всеки от които съдържа идентификационен номер на служител, пълно име, дата на раждане и място на раждане. Редовете образуват таблица, която ще бъде имитирана на екранната форма от 4 контроли Combo Box (фиг. 7.1), които образуват масив от Comb(i) обекти със свойството Style, зададено на 1 - SimpleCombo.

Маркирайте реда за изтриване", vbExclamation

Comb(j).RemoveItem i

„Вмъкнете нов входна масата:

Частен под mnuInsert_Click()

i% = Comb(0).ListIndex

Ако аз< 0 Then

MsgBox "Изберете ред за вмъкване преди него", vbExclamation

Comb(0).AddItem InputBox("Въведете номер"), т.е

Comb(1).AddItem InputBox("Въведете име"), т.е

Comb(2).AddItem InputBox("Въведете дата на раждане."), т.е

Comb(3).AddItem InputBox("Въведете място на раждане."), т.е

„Промяна на запис в таблица:

Частен под mnuUpdate_Click()

i% = Comb(0).ListIndex

Ако аз< 0 Then

MsgBox "Изберете ред за промяна", vbExclamation

Comb(0).List(i) = InputBox("Въведете номер", Comb(0).List(i))

Comb(1).List(i) = InputBox("Въведете име", Comb(1).List(i))

Comb(2).List(i) = InputBox("Въведете дата на раждане", Comb(2).List(i))

Comb(3).List(i) = InputBox("Въведете място на раждане", Comb(3).List(i))

„Изчистване на цялата маса:

Частен под mnuClear_Click()

‘ Попълване на таблицата с информация от текстов файл:

Частен под mnuLoad_Click()

Отворете "person.txt" за въвеждане като #1

Вход #1, numb, fio, bdate, bloc

Comb(0).AddItem вцепенен

Гребен(1).AddItem fio

Comb(2).AddItem bdate

Блок Comb(3).AddItem

‘ Записване на подробности от таблицата в текстов файл:

Частен под mnuSave_Click()

N% = Comb(0).ListCount

Отворете "person.txt" за изход като #1

За i = 0 до N - 1

numb = Val(Comb(0).List(i))

fio = Гребен(1).Списък(i)

bdate = CDate(Comb(2).List(i))

bloc = Comb(3).List(i)

Напишете #1, numb, fio, bdate, bloc

„Изключване на приложението:

Частен под mnuExit_Click()

Пример 7.2 . Помислете за приложение, което демонстрира използването на контроли често срещаниДиалогза отваряне и запазване на файл, за избор на шрифт и цвят и за редактиране на текст.

Форматиране на файл текстще се зареди в текстовото поле (лявото поле на фиг. 7.2) и форматираният файл RTF- в полето Богаттекстово поле(дясно поле на фиг. 7.2).

обект

Клас

обект

Имот

обект

Стойност на имота

„Общи съвети

диалог"

Раздел Отваряне/Запазване като

Раздел Шрифт

Цветен раздел

Таблицата не показва свойствата на командите на менюто Шрифт, цвятИ редактиране. По-долу е кодът на процедурата също само за команди от менюто Файл (отворен, ЗапазванеИ ЗапазванеКато). Компилирането на код за други команди от менюто е темата на втората задача от тази работа.

Частен под mnuOpen_Click()

CommonDialog1.ShowOpen

F$ = CommonDialog1.FileName

Ако Right(F, 3) = "rtf" Тогава

RichTextBox1.LoadFile F

ElseIf Right(F, 3) = "txt" Тогава

Отворете F за въвеждане като #1

S$ = вход (N, 1)

Частен под mnuSave_Click()

CommonDialog1.ShowSave

F$ = CommonDialog1.FileName

Частен под mnuSaveAs_Click()

CommonDialog1.ShowSave

F$ = CommonDialog1.FileName

RichTextBox1.SaveFile F, rtfRTF

В хода на тази работа студентът трябва да изпълни 2 задачи.

Упражнение 1. В процеса на изпълнение на задачата учениците овладяват възможностите за работа с файлове с произволен достъп, налични във VB 6 ( RAF-случаендостъпфайл).

За дадена таблица на база данни се декларира дефиниран от потребителя тип данни, декларира се променлива от този тип (урок, стр. 108 - 112), процедурите се компилират и отстраняват грешки, които използват променливата от дефиниран от потребителя тип.

По-специално са внедрени процедури за команди от менюто. Пишете във файлRAFИ Прочетете от файлRAF. Както в пример 7.1, за редактиране на данните се използва масив от обекти. КомбоКутияи меню редактиранес пет команди на подменюто: Добави бележка, Изтриване на запис, Вмъкване на запис, Редактиране на запис, Изчистете масата.

Опция 1.

Декларирайте потребителски тип данни за таблицата „Автомобил“ (Таблица 7.1) на базата данни „Автосервиз“.

кола

кола

неизправности

Долният ред на таблица 7.1 показва типовете полета.

Вариант 2.

Декларирайте потребителски тип данни за таблицата с грешки (Таблица 7.2) на базата данни на Car Service.

неизправности

Име

неизправности

Цена

Долният ред на таблица 7.2 показва типовете полета.

Като използвате примерното приложение 7.1 като проба, организирайте въвеждане и редактиране на данни за представената таблица, като записвате тези данни във файл с произволен достъп и четете данни от файл с произволен достъп. Както в пример 7.1, тези действия се изпълняват като работата на командите на менюто, показани на фиг. 7.1.

Задача 2. Като част от дейността учениците добавят нови функции към примерното приложение 2, които позволяват приложението да се третира като обикновен текстов редактор.

Опция 1 често срещаниДиалогприлагане на команди от менюто ШрифтИ цвят(с подменю Цвят на символаИ Цвят на фона). С помощта на тези команди трябва да се предостави избор на шрифт (името му, стил и размер) за избрания текстов фрагмент в прозореца. Богаттекстово поле, както и да изберете цвета на символите на избрания фрагмент и да изберете цвета на фона на целия този прозорец.

Забележка:При настройка на обект често срещаниДиалогза да изберете шрифт чрез свойството (Custom), не забравяйте да зададете стойността на свойството Flags на 1, 2 или 3 (вижте ръководството, стр. 183).

Вариант 2. Използване на управлението често срещаниДиалогприлагане на команди от менюто редактиране(подменю копие, РазрезИ паста), чиято цел е копиранеили отстраняванекъм клипборда на избрания текстов фрагмент, както и вмъкнетекъм избраното място от текста на съдържанието на клипборда.

Забележка:Към клипборда (обект клипборда) можете да използвате методите SetText и GetText:

клипборда. SetText RichTextBox1.SelText

RichTextBox1.SelText = Клипборд. gettext

8. СЪХРАНЯВАНЕ И ЧЕТЕНЕ НА ИНФОРМАЦИЯ

Така че след като програмата приключи, всички данни, създадени в паметта, не се губят, трябва да можете да запазвате информация на твърдия диск. В противен случай цялата информация ще изчезне без следа. Данните могат да се съхраняват и четат по различни начини. Двоичните и текстовите файлове могат да се използват за работа с информация с различни размери и формати. Можете да използвате регистъра на Windows, за да съхранявате малки количества информация. И за най-сложните задачи е разумно да се използват бази данни.

8.1. Отваряне на файлове с "отваряне »

Файлът е наименувана област на всеки външен носител за съхранение. Данните "живеят" в паметта на компютъра, а файловете - на твърдия диск. Програмата не работи директно с файлове, а използва операционната система като посредник.

Има два вида имена на файлове: пълни - в допълнение към името на файла се посочва и местоположението на файла на външен носител (например „C:\Program Files\Microsoft Visual Studio\VB98\VB 6.EXE" ) и кратко - само името на файла (VB 6.EXE ). Ако местоположението на файла не е посочено, тогава ще се търси в текущата папка, по подразбиране - папката, в която се намира вашето приложение. Непосредственото име на файла се състои от две части: действителното уникално име на файла и неговото разширение. Самото име идентифицира файла, докато разширението обикновено показва формата на файла или с каква програма е създаден.

Преди да започнете да работите с файл, трябва да попитате операционната система показалец (дескриптор) файл. За да го получите, използвайте "FreeFile". След това, използвайки оператора "Open", този указател се свързва с необходимия файл. Едва след това програмата ще може да работи с него. Синтаксисът за отваряне на файл е както следва:

„вземете безплатен файлов указател и го присвоете на променлива

FileHandle% = FreeFile

‘ отворете файла

Отворете FilePath_

Като [#]FileHandle%

...(работа с файл)

Затваряне [#]FileHandle

· FileHandle % е променлива, която съхранява указателя на файла;

· FreeFile е името на функция, която връща файлов указател;

· Open – име на оператор;

· FilePath - пълното име на файла;

· For е ключова дума, последвана от описание на режима за достъп до файла;

· Режим – режим на достъп до файл (виж Таблица 15);

Таблица 15

Режими за достъп до файлове

Режими на достъп

Описание

Добавете

Добавяне на данни в края на съществуващ текстов файл. Ако файлът не съществува, той ще бъде създаден

Двоичен

Отваряне на файл в двоичен режим, т.е. като набор от байтове. Ако файлът не съществува, но ще бъде създаден

Вход

Отваряне на файл за четене в текстов формат

Изход

Отваряне на файл за запис на текстов файл. В този случай цялата стара информация ще бъде изтрита. Ако файлът не съществува, но ще бъде създаден

Случаен

Отваряне на файл в режим на произволен достъп. Този режим се използва за работа с прости записи. Ако файлът не съществува, но ще бъде създаден

· Access е незадължителна ключова дума, последвана от описание на типа достъп;

· AccessType - описание на типа достъп:

· Прочетете - четене;

· Пишете - записвайте;

· Read Write - четене и писане.

Забележка

Режимите на достъп за добавяне и извеждане позволяват само достъп за запис, достъп само за четене на вход и двоичен и произволен достъп и от трите вида достъп.

· LockType е незадължителен параметър, който определя дали други програми могат да използват този файл, докато вашата програма работи с него. Обикновено се свързва с работата в мрежа (вижте Таблица 16).

Таблица 16

Възможни стойности за параметъра LockType

Значение

Описание

споделено

Всички потребители с необходимите права ще имат пълен достъп до файла

заключване четене

Четенето на файла е блокирано, но писането е разрешено

Заключване Писане

Записът във файл е блокиран, но четенето е разрешено

Заключване Четене Писане

Четенето и писането на него е забранено.

· Както е ключова дума, последвана от указател на файл.

· # е символ, указващ, че стойността след него е указател на файл.

· Len е незадължителна ключова дума, която трябва да бъде последвана от параметър, указващ дължината на записа.

· CharInBuffer % - дължина на записа за файл, отворен в режим на произволен достъп (Random).

· Close е оператор, който затваря файла, свързан с посочения манипулатор.

Важно е да затворите файла, след като приключите работата с него. Операторът "Close" освобождава указателя на файла и свързаната с него област на паметта.

Когато работите с файл, а именно когато четете от него, е много важно да определите края на файла. Може да се дефинира с помощта на функцията EOF (End Of File):

EOF(FileHandle)

· EOF – име на функция;

· FileHandle е манипулаторът на файла, чийто край се определя.

Функцията връща True (истина), ако е достигнат краят на файла, в противен случай връща False (False).

8.2. Четене и запис в текстов файл

Текстовият файл се отваря в режим на достъп "Вход", "Изход" или "Добавяне" (виж Таблица 15). Особеността на този режим е, че той работи само със специфични символи за печат. Безполезно е да работите със служебни символи.

За запис на информация се използват два оператора "Печат" и "Писане", чийто синтаксис е както следва:

Печат #FileHandle%, VarBuffer[;]

Напишете #FileHandle%, VarBuffer[;]

· Print /Write - ключови думи на оператора.

· #FileHandle % - файлов указател, към който ще бъде поставена информацията.

· VarBuffer е стойността, която ще бъде записана във файла.

· ; – незадължителен параметър, използван при запис в текстов файл, означава, че следващата стойност ще бъде записана на същия ред, а ако липсва, на следващия.

За четене на информация от файл се използват операторите "Input" и "Line Input". Синтаксисът е подобен един на друг:

Редов вход #FileHandle%, VarBuffer

Въведете #FileHandle%, VarBuffer

· Line Input / Input - оператор ключови думи.

· #FileHandle % - файлов указател, от който ще се чете информация.

· VarBuffer е променлива, в която ще се чете информация.

Разликата между операторите Line Input и Input е, че първият е предназначен само за текстови файлове, а вторият за всякакви. При текстови файлове "Вход" чете данни на същия ред до първия разделител (за текстови данни разделителят е "," (запетая), а за числови данни - " " (интервал) и "," ), а „Въвеждане на ред » чете целия ред наведнъж, игнорирайки всички разделители.

Забележка

IN Visual Basicняма средства за контролиране на формата на предварително създадени файлове. Следователно символът "2" може да се чете като съответното число и обратно.

8.3. Работа с бинарни файлове

Файловете се отварят в двоичен форматоператор " Отвори" в режим " Двоичен". Отличителна черта на този режим е, че работата с файла е фокусирана изключително върху конкретни байтове. Тъй като Visual Basic може да адресира директно до желаното местоположение на файла, този режим също се нарича − режим на директен достъп. Друга особеност на този режим е възможността за едновременно записване и четене на информация в различни части на файла, без да го отваряте отново. Записването във файл, отворен в двоичен режим, се извършва чрез следния синтаксис:

Поставете #FileHandle%, , NameVar

· Put - името на оператора за запис на информация.

· RecNumber – байт номер на файла, в който ще се записва информацията (незадължителен параметър).

· NameVar е променлива, чието съдържание ще бъде записано във файла.

Четенето на информация от файл в двоичен режим се извършва с помощта на следния оператор:

Вземете #FileHandle%, , NameVar

· Get е името на оператора за запис на информация.

· FileHandle % - файлов указател.

· RecNumber – номер на байт на файла, от който ще се чете информация (по избор).

· NameVar - името на променливата, в която ще бъде поставена прочетената информация.

Тъй като двоичният режим е фокусиран върху байтове информация, при четене от файл променливата на буфера трябва да има строго определен тип: или "Байт", тогава ще бъде прочетена цифровата стойност на байта, или символ с фиксирана дължина от един знак, тогава байтът ще бъде прочетен като знак, ANSI, чийто код съответства на стойността на байта. Този символ може дори да бъде контролен символ, което не може да се постигне в случай на текстови файлове.

Забележка

При липса на параметър "RecNumber", информацията ще бъде записана или прочетена в следващия байт на файла след този, с който са работили преди.

8.4. Графична манипулация

Графичните изображения могат също да се записват във файлове и да се извличат от тях. За да извлечете картина от файл с растерна графика или икона и да я присвоите на свойството "Picture" на контролите "PictureBox" и "Image", използвайте функцията "LoadPicture ()" със следния синтаксис:

ImageCtrl.Picture = LoadPicture(FilePath)

· ImageCtrl е името на контролата на прозореца на картината, контролата на изображението или формуляра;

· LoadPicture - име на функция;

· FilePath е пълното име на файла.

SavePicture ImageCtrl .Picture, FilePath

· SavePicture – име на оператора;

· ImageCtrl е името на контролата на прозореца на картината, контролата на изображението или формуляра;

· Картина - името на свойството на обекта, отговорно за изображението;

· FilePath е пълното име на файла, което показва местоположението му на диска.

8.5. Работа с данни в регистъра

Можете да използвате системния регистър на Windows, за да съхранявате малки части от информация за символен формат. Visual Basic има четири процедури, които можете да използвате за достъп до него. Те са много лесни за използване, но имат един основен недостатък: имате достъп до данни само от конкретен ключ на системния регистър: "MyComputer \HKEY _CURRENT _USER \Software \VB и VBA програмни настройки". За достъп до други ключове на системния регистър трябва да използвате специалните функции " Win 32 API".

За да получите стойността на настройка от ключ на системния регистър на Windows, специфичен за Visual Basic, използвайте следната функция:

MyString = GetSetting(VBKeyName, Section, Key [,Default])

· MyString - низ за съхраняване на стойността, върната от функцията;

· GetSetting е името на функцията.

· VBKeyName е низова стойност, която е името на вътрешен VB /VBA подключ.

· Ключът е низова стойност, която представлява името на параметъра в секцията.

· Default е незадължителен аргумент, чиято стойност ще бъде върната в случай на грешка (липсващ параметър).

За да съхраните стойност в системния регистър на Windows, използвайте следния оператор:

SaveSetting VBKeyName, Section, Key, MyString

· SaveSetting е името на оператора.

· MyString е низова променлива, в която ще бъде поставена намерената стойност.

За да получите масив от системния регистър, съдържащ всички стойности на параметри от конкретен подключ, използвайте следната функция:

MyVariant = SetAllSettings(VBKeyName, Section)

· MyVariant е масив от стойности от тип "Variant", върнат от функцията.

· SetAllSettings е името на функцията.

· Раздел – Низова стойност, представляваща раздел или подраздел на конкретно приложение.

За да премахнете цяла секция с параметри, използвайте оператор със следния синтаксис:

DeleteSetting VBKeyName, Section, Key

· DeleteSetting е името на оператора.

Защитни въпроси за самопроверка

  1. Как може част от информацията да се съхранява дългосрочно?
  2. Какво е файл?
  3. Какви имена на файлове знаете?
  4. Дайте синтаксиса на оператора "Open". Обяснете предназначението на неговите параметри.
  5. Как мога да организирам съвместния достъп на няколко приложения до един и същи файл едновременно?
  6. Как да определим, че информацията във файла е изчерпана?
  7. Защо се препоръчва да затворите файла след работа с него?
  8. Каква според вас е разликата между режимите на текстови и двоични файлове?
  9. Как се четат и записват данни в режим на текстов файл?
  10. Как се четат и записват данни в режим на двоичен файл?
  11. Каква е разликата между операторите "Print" и "Write" при работа с файлове?
  12. Каква е разликата между операторите "Въвеждане" и "Въвеждане на ред" при работа с файлове?
  13. Как можете да работите с графични данни?
  14. Какви са основните принципи на работа с системния регистър на Windows?

Всяка програма трябва да записва данни на диск и да ги чете от диска. Това е необходимо, например, за да запазите настройките на програмата; малко вероятно е потребителят да хареса програмата, която ще трябва да бъде конфигурирана отново при следващото стартиране.

Тази статия се фокусира върху работата с текстови файлове с помощта на Visual Basic.

Файлов дескриптор

За работа с файлове операционна системаизползва I/O канали, т.е. всеки отворен файл има свой номер.

Във Visual Basic има функция безплатен файл, който връща номера на свободен канал, който може да се използва за работа с файла. Ако няма свободни канали, възниква грешка.

FreeFile[(RangeNumber) ]

RangeNumber- незадължителен параметър, който ви позволява да определите обхвата на безплатните канали, ако RangeNumber= 0 (по подразбиране), тогава номерът на канала се връща от диапазона 1 - 255, а ако е 1, тогава от диапазона 256 - 511.

MyFile = Безплатен файл " Присвоена е променлива MyFile безплатен канали сега може да се използва за работа с файлове

Работа с текстови файлове

Най-често е необходимо да се срещнете с текстови файлове. Текстовите файлове се състоят от набор ASCII знаци(Американски стандартен код за обмен на информация - Американски стандартен код за обмен на информация).

Преди да започнете да пишете / четете данни, файлът трябва да бъде отворен, това се прави с помощта на оператора отворен(Име на файл) За As #номер_на_файл, Където:

Вход- отворете файл за четене, ако файлът не съществува, тогава възниква грешка;

Изход- за запис, ако файлът не съществува, той ще бъде създаден, а ако файлът съществува, ще бъде презаписан;

Добавете- за добавяне, ако файлът не съществува, той ще бъде създаден, а ако файлът съществува, тогава данните ще бъдат добавени в края на файла.

Четене текстови файловеможе да се направи по два начина: четене на символ по знак, за това се използва функцията Вход(Брой_прочетени_знаци, #номер_на_файл) и ред по ред, за това се използва функцията Линеен вход #номер_на_файл, Къде_да чета.

DimMyFile

Dim S като низ „Променлива за съхраняване на прочетени данни

MyFile = Безплатен файл

Отворете ("C:\TEST.txt") за въвеждане като #MyFile

Редово въвеждане #MyFile,S „Прочетете първия ред от файла TEST.TXT в променливата S

DimMyFile „Декларирайте променлива за безплатен файл

Dim i като цяло число „Променлива за цикъл

Dim tS като низ „Променлива за четене на низове

Dim S като низ „Променлива за съхраняване на крайните данни

MyFile = Безплатен файл „Задайте безплатен канал за работа с файлове

„Отворете файла TEST.TXT за четене

За i = 1 до 5

Редов вход #MyFile, tS „Прочетете файла TEST.TXT ред по ред

Ако i => 5, тогава S = tS „Ако петият ред, тогава го запазете в променливата S

Следваща i

Close #MyFile „Затворете файла

Dim MyFile "Декларирайте променлива за безплатен файл

Dim S As String "Променлива за съхраняване на прочетени данни

MyFile = Безплатен файл „Задайте безплатен канал за работа с файлове

Отворете ("C:\TEST.txt") за въвеждане като #MyFile „Отворете файла TEST.TXT за четене

S = Input$(LOG(1), 1) „Прочетете целия файл в променлива S

Close #MyFile „Затворете файла

Има оператори за запис във файл. Печат #номер_на_файл, ДанниИ Напишете #номер_на_файл, Данни. Единствената разлика между тези оператори е, че Пишетезаписва данните в кавички и печатбез кавички.

Следният код ще се създаде на устройство C:\ нов файл TEST.TXT и напишете два низа в него, първият без кавички, а вторият с кавички:

DimMyFile „Декларирайте променлива за безплатен файл

MyFile = Безплатен файл „Задайте безплатен канал за работа с файлове

Отворете ("C:\TEST.txt") за изход като #MyFile „Отворете файла TEST.TXT за запис

Print #MyFile, "Този низ е написан от оператора Print, той е без кавички..."

Write #MyFile, "Този низ е написан от командата Write, той е в кавички..."

Close #MyFile „Затворете файла

Това всъщност е всичко. Както вероятно вече сте разбрали, операторът, използван за затваряне на файл, е Близо#номер_на_файл, при което, # номер_на_файлне е необходимо да се посочва.

Статията е малко сурова, но ще бъде полезна за начинаещи програмисти. Следващият път ще говоря за работа с бинарни файлове.



Зареждане...
Връх