—тудопеди€

√лавна€ страница —лучайна€ страница

 ј“≈√ќ–»»:

јвтомобилијстрономи€Ѕиологи€√еографи€ƒом и садƒругие €зыкиƒругое»нформатика»стори€ ультураЋитератураЋогикаћатематикаћедицинаћеталлурги€ћеханикаќбразованиеќхрана трудаѕедагогикаѕолитикаѕравоѕсихологи€–елиги€–иторика—оциологи€—порт—троительство“ехнолог舓уризм‘изика‘илософ舑инансы’им舄ерчениеЁкологи€ЁкономикаЁлектроника






√лава 16. —троки, файлы, обработка ошибок






¬ этой главе € собрал совершенно необходимые, но разнокалиберные вещи, которые по тематике не подходили к другим главам.

—троки

—о строковым типом Stringмы познакомились в 4.7.  акие интересные задачи св€заны с работой со строками? Ўифровка-дешифровка информации. ѕоиск в длинном тексте (например, в словаре или в инструкции по игре) нужного слова, которое просто так, глазами, искать очень долго. јвтоматическое исправление орфографических ошибок в диктанте по русскому €зыку. » так далее.

ƒл€ решени€ этих задач мы должны уметь " влезать внутрь строк", то есть анализировать и преобразовывать строки. Visual Basic предоставл€ет дл€ этого богатый набор функций. ¬от некоторые из них:

‘ункци€ –езультат ѕо€снение
" ћото" +" роллер" ћотороллер ќпераци€ + над строками просто соедин€ет строки в одну. Visual Basic может ее спутать со сложением чисел
" ћото" & " рол" & " лер" ћотороллер ќпераци€ & тоже соедин€ет строки в одну. ≈е рекомендуетс€ всегда примен€ть вместо +, так как со сложением ее не спутаешь
Len(" „ук и √ек")   ƒлина строки, включа€ пробелы
Mid(" јстроном", 3, 4) трон „асть строки длиной 4, начина€ с 3-го символа
Mid(" „ук и √ек", 5, 1) и 5-й символ в строке

ѕри помощи функцииMid вы можете добратьс€ до каждой буквы в тексте. —ледующий фрагмент распечатывает в столбик слово " “елепортаци€":

s = " “елепортаци€"

For i = 1 To Len(s)

Debug.Print Mid(s, i, 1) 'Ёто i-€ буква в строке

Next

 

—ледующа€ функци€ позвол€ет искать в тексте нужное слово:

InStr(" јстроном", " трон")   ѕозици€ (номер символа), начина€ с которой строка " трон" находитс€ в строке " јстроном"
InStr (" јстроном", " “рон")   —трока " “рон" не найдена в строке " јстроном"
Left(" ѕобеда", 2) ѕо 2 левых символа в строке
Right(" ѕобеда", 3) еда 3 правых символа в строке
Ucase(" аст–ќнќм") ј—“–ќЌќћ ¬се символы строки перевод€тс€ в верхний регистр
Lcase(" аст–ќнќм") астроном ¬се символы строки перевод€тс€ в нижний регистр

 

¬ 2.5 ( алькул€тор) жизнь заставила нас познакомитьс€ с функцией Val, котора€ преобразует строку в число, а в 4.10 (ѕеременные) - с функцией Str, котора€ преобразует число в строку. Ќапомним их вам:

Val(" 20 груш и 8 €блок")   ‘ункци€ читает строку слева направо, пока не натолкнетс€ на символы, никакого отношени€ к числам не имеющие
Val (" - 1 0груш") -10 Ќа пробелы при этом внимание не обращаетс€
3 * Val(" 2" & " 0")   ¬ыражение " 2" & " 0" равн€етс€ строке " 20", ну а Val (" 20") равн€етс€ числу 20
Str(5 * 5)   „исло 25 преобразуетс€ в строку " 25". ’от€, надо сказать, что Visual Basic при работе с данными во многих случа€х сам, без вс€кого вмешательства, услужливо преобразовывает данные к удобному с его точки зрени€ типу.

 

 огда мы вводим текст в текстовое окно, мы часто не замечаем, что лишний раз нажали на клавишу пробела, тем более, что лишние пробелы, особенно в самом начале и в самом конце строки, заметить трудно. ћы не всегда заботимс€ о том, чтобы избавитьс€ от них. ј зачем? ј затем, что компьютер пробелы видит не хуже любой буквы и считает их полноправными символами. ћы склонны считать строки " јфрика" и " јфрика " вполне одинаковыми.  омпьютер же не может позволить себе такой вольности, он прекрасно видит, что во второй строке в конце стоит пробел. «начит строки не равны и это может привести к неожиданным дл€ нас результатам. —ледующие три функции позвол€ют нам справитьс€ с невнимательностью:

‘ункци€ –езультат ѕо€снение
" ∆" & LTrim(" Ѕутевни матлны ") & " ∆" ∆Ѕутевни матлны ∆ ‘ункци€ LTrim отсекает ведущие слева пробелы
" ∆" & RTrim(" Ѕутевни матлны ") & " ∆" ∆ Ѕутевни матлны∆ ‘ункци€ RTrim отсекает волочащиес€ справа пробелы
" ∆" & Trim(" Ѕутевни матлны ") & " ∆" ∆Ѕутевни матлны∆ ‘ункци€ Trim отсекает пробелы и слева и справа

“аблица ASCII

—имволы, используемые в работе с компьютерами, сведены в так называемую таблицу ASCII. ” каждого из них есть пор€дковый номер в этой таблице. ≈го нам сообщает функци€ Asc. ‘ункци€ же Chrнаоборот - по номеру сообщает символ:

‘ункци€ –езультат ѕо€снение
Asc(" џ")   Ѕуква џ стоит в таблице ASCII под 219 номером
Chr(219) џ ѕод 219 номером в таблице ASCII стоит буква џ

¬сего в таблице ASCII 256 символов, пронумерованных от 0 до 255. ¬от фрагмент, распечатывающий эти символы, начина€ с 32-го:

For i = 32 To 255

Debug.Print Chr(i);

Next

¬от результат работы фрагмента:

! " #$%& '()*+, -./0123456789:; < =>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz

{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ °Ґ£§•¶І®©™Ђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњ

јЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю€

 

«адание 124: ќпределите без компьютера, что напечатает оператор Debug.Print Chr(Asc(" ё") + 1)?

«адание 125: " ƒетска€ шифровка". —реди детей встречаетс€ игра, заключающа€с€ в зашифровке своей речи Удл€ секретностиФ за счет вставки в произносимые слова какого-нибудь звукосочетани€, например, УбырФ. “огда вместо слова УкороваФ будет произнесено УкобырробырвабырФ. —оставьте программу, котора€ распечатывает любую строку из 6 букв, после каждой второй буквы вставл€€ УбырФ. ≈сли получилось, то решите эту задачу дл€ строки произвольной длины.

«адание 126: ƒавайте поставим задачу шифровани€ текста более серьезно. »меетс€ строка текста. “ребуетс€ написать программу, котора€ зашифровывала бы ее в другую строку. —пособов шифровки вы можете придумать сколько угодно. ѕопробуйте такой Ц замен€ть каждый символ текста символом, следующим по пор€дку в алфавите (в таблице ASCII). “огда слово кот превратитс€ в слово лпу. —оставьте, пожалуйста, и программу дешифровки.  огда вы познакомитесь с файлами, вы сможете уже зашифровывать и дешифровывать не отдельные строки, а целые тексты. ¬ том числе и ваши программы.

ќдин из возможных путей программировани€ таких задач: Ќачните с того, что объ€вите массив, состо€щий из строк длины 1, то есть, по сути, массив символов. ¬от как это сделать: Dim s(20) As String * 1. «аполните массив символами исходной строки. “еперь вам будет удобней с ними работать. ѕридумайте, что делать с буквой " €". ¬ ответе же эта задача решена другим, более коротким способом.

‘айлы

≈сли вы играли в компьютерные игры, то наверн€ка сохран€лись. ј задумывались ли вы над тем, что значит сохранитьс€? ¬ы знаете, что в результате сохранени€ игра в следующий раз начинаетс€ с того места, где вы остановились раньше. ј как компьютер помнит, где вы остановились? ¬ каком месте компьютера хранитс€ эта информаци€? ¬ персональном компьютере два вида пам€ти - оперативна€ и на диске (смотри ѕриложение 1). ќперативна€ пам€ть стираетс€ в момент выключени€ компьютера, а поскольку компьютер мы выключаем чуть ли не каждый день, то использовать ее дл€ сохранени€ нельз€. ѕоэтому все, что нужно сохранить, компьютер запоминает на диске.  огда в следующий раз вы запускаете игру, то программа игры считывает с диска сохраненную информацию и с ее помощью позвол€ет вам продолжить игру с того места, где вы остановились.  акую именно информацию об игре нужно дл€ этого сохран€ть, вам станет €сно позже.

 ак книжка состоит из рассказов, так диск состоит из файлов. ‘айлов на диске множество.  ажда€ игра и вообще люба€ программа сохран€етс€ в своем файле. —колько игр, столько и файлов. √овор€т, что когда происходит сохранение информации в файле, то информаци€ выводитс€ или записываетс€ из оперативной пам€ти в файл, а когда игра или друга€ программа читает эту информацию из файла, то говор€т, что информаци€ вводитс€ или загружаетс€ из файла в оперативную пам€ть.

≈сли вы еще не знакомы с пон€тием файла или папки, прочтите ѕриложение 2. ƒл€ определенности мы будем считать, что файл расположен именно на магнитном диске, хот€ файл - достаточно общее пон€тие, которое может примен€тьс€ к различным устройствам ввода, вывода и хранени€ информации.

¬ Visual Basic существует несколько типов файлов. ћы познакомимс€ с самым простым из них - текстовым файлом. ¬ам совершенно не об€зательно знать, как физически устроен носитель, на который файл будет записыватьс€. ѕри работе с текстовым файлом удобно воображать, что носитель - не диск, состо€щий из дорожек, а подобен листу бумаги или экрану монитора, файл же - это строки информации на этом листе или экране. «апись в файл и считывание из файла осуществл€ютс€ магнитной головкой, котора€ движетс€ по строкам файла строго последовательно, не пропуска€ ни строки, подобно авторучке, когда вы пишете письмо, или глазу, когда его читаете. Ќо у магнитной головки нет свободы глаза или авторучки, которые по вашему желанию могут " прыгать" по листу, как хот€т. √оловка движетс€ строго последовательно, не пропуска€ ни символа, поэтому такие файлы еще называют файлами с последовательным доступом.

ƒанные в текстовых файлах могут быть числами, строками или иметь другой тип.

—ейчас на шести задачах мы научимс€ работать с текстовыми файлами.

 

«адача 1: «аписать слово " јзи€" и число 1998 на магнитный диск c: в текстовый файл с именем Filimon.txt, располагающийс€ в папке VB.

–ешение: ѕрежде всего вы должны убедитьс€, что така€ папка действительно существует по указанному адресу. ‘айла же там может и не быть. «атем придумаем файлу Filimon.txt номер, которым мы будем пользоватьс€ в программе. ѕусть это будет 1.

ѕрежде чем начать работать с файлом, он должен быть открыт. ѕри этом компьютер выполн€ет определенные подготовительные действи€ дл€ работы с файлом. ¬от как выгл€дит оператор, открывающий текстовый файл дл€ записи:

 

ќператор: Open " C: \VB\Filimon.txt" For Output As #1
ѕеревод: ќткрыть файл " C: \VB\Filimon.txt" дл€ вывода как є1

 

≈сли файл раньше не существовал, то он создаетс€. ≈сли файл открываетс€ дл€ записи, то магнитна€ головка перемещаетс€ в начало файла. Ёто означает, как вы можете догадатьс€, что если в файле было раньше что-то записано, то все сотретс€. ¬от программа:

Private Sub Command1_Click()

Open " C: \VB\Filimon.txt" For Output As #1 'ќткрыть дл€ записи файл Filimon.txt в папке VB диска C под номером 1

Write #1, " јзи€" '«аписать в файл є1 строку " јзи€"

Write #1, 1998 '«аписать в файл є1 в следующую строку число 1998

Close #1 '«акрыть файл є1

End Sub

¬ы видите, что собственно запись осуществл€етс€ оператором Write. ѕосле работы с файлом его нужно закрыть оператором Close.

ƒавайте убедимс€, что все действительно правильно записалось. ƒл€ этого выйдем из Visual Basic в Windows, найдем нужную папку и обнаружим, что там действительно находитс€ файл Filimon.txt. „тобы загл€нуть в него, щелкните по нему дважды мышкой, он откроетс€ программой Notepad и вы увидите, что он содержит две строки:

" јзи€"

≈сли вместо двух операторов Write вы напишете один:

Write #1, " јзи€", 1998

то в файл будет записана одна строка:

" јзи€", 1998

≈сли вы не хотите стирать содержимое файла, а просто хотите дописать что-нибудь в его конец, то вместо слова Output в операторе Open нужно использовать слово Append.

 

”добно держать текстовый файл, в который ваша программа сохран€ет свои данные, в той же папке, где наход€тс€ файлы вашего проекта. ¬ этом случае возникает проблема - при переносе папки с проектом в другое место диска измен€етс€ ее адрес, а значит и адрес файла данных. ¬ операторе же Open указан старый адрес. Visual Basic выдаст сообщение об ошибке. ¬ этой ситуации нужно в операторе Open дать пон€ть компьютеру, что файл находитс€ именно в папке с файлами проекта. ƒелаетс€ это так:

Open App.Path & " \Filimon.txt" For Е

App.Path - это адрес папки вашего проекта, где бы он ни путешествовал.

 

»нформаци€ в наш файл может записыватьс€ только по пор€дку, последовательно. ћы не можем записать что-то сперва в начало файла, потом в конец, потом в середину. “о же самое относитс€ и к считыванию, о котором сейчас пойдет речь.

 

«адача 2: ¬ файле Filantrop.txt в папке проекта записаны следующие строки:

" јзи€"

" јфрика", 2000

Е.

¬ывести третью строку на экран монитора.

¬от программа:

Private Sub Command3_Click()

Dim a1 As Integer '„етыре переменные в оперативной пам€ти,

Dim a2 As String 'в которые будут загружены данные

Dim a3 As String 'из первых трех строк

Dim a4 As Integer 'файла

Open App.Path & " \Filantrop.txt" For Input As #1 'ќткрыть дл€ чтени€ под номером 1 файл Filantrop.txt из папки проекта

Input #1, a1 'чтение 1-й строки

Input #1, a2 'чтение 2-й строки

Input #1, a3, a4 'чтение 3-й строки

Close #1 '«акрыть файл 1

Debug.Print a3, a4

End Sub

¬от результаты в окне Immediate:

јфрика 2000

¬ы видите, что собственно чтение осуществл€етс€ оператором Input. ѕосле работы с файлом его нужно закрыть оператором Close. ќбратите внимание, что дл€ того, чтобы добратьс€ до третьей строки, нам пришлось " зр€" прочитать первые две.

 

«адача 3: ¬ предыдущей задаче мы еще до считывани€ знали, как располагаютс€ по строкам и внутри строк данные в файле Filantrop.txt. ќднако, нередки случаи, когда мы не имеем об этом представлени€. ¬се, что мы знаем, это то, что файл состоит из строк. “ем не менее, хочетс€ прочитать данные из файла, чтобы хот€ бы посмотреть на них. ƒл€ этого можно приказать Ѕэйсику загружать каждую строку файла, независимо от того, из каких данных она состоит, в переменную типа String. ¬от программа, распечатывающа€ три первые строки файла Filantrop.txt:

Private Sub Command4_Click()

Dim s1 As String '“ри переменные в оперативной пам€ти,

Dim s2 As String 'в которые будут загружены три

Dim s3 As String 'первые строки файла

Open App.Path & " \Filantrop.txt" For Input As #1 'ќткрыть дл€ чтени€ под номером 1 файл Filantrop.txt из папки проекта

Line Input #1, s1 'чтение очередной строки файла

Debug.Print s1

Line Input #1, s2 'чтение очередной строки файла

Debug.Print s2

Line Input #1, s3 'чтение очередной строки файла

Debug.Print s3

Close #1 '«акрыть файл 1

End Sub

«агрузку очередной строки в переменную типа String выполн€ет оператор Line Input. ¬от результаты в окне Immediate:

" јзи€"

" јфрика", 2000

¬ы видите, что кавычки и зап€та€ не исчезли, как это было в распечатке задачи 2. Ёто потому, чтоLine Input не обращает внимани€ на символы, из которых состоит строка файла. ќн просто загружает их подр€д в строковую переменную. ¬ нашем случае, например, строка s3 состоит из символов " јфрика", 2000, включа€ кавычки и зап€тую.

 

≈сли вы хотите как-то изменить содержимое текстового файла на диске, то вам целесообразно полностью загрузить его в пам€ть, изменить его там, как вам надо, а затем то, что получилось, целиком записать обратно в файл.

«адача 4: ‘айл f состоит из 10 строк. ƒописать в конец каждой строки восклицательный знак.

ѕрограмма:

Dim s(1 To 10) As String

Private Sub Command1_Click()

'«агружаем файл в пам€ть:

Open App.Path & " \f.txt" For Input As #1 'ќткрыть дл€ чтени€ под номером 1 файл f.txt из папки проекта

For i = 1 To 10

Line Input #1, s(i) 'чтение очередной строки файла

Next

Close #1 '«акрыть файл 1

'ѕреобразовываем строки в пам€ти:

For i = 1 To 10

s(i) = s(i) & "! " 'ƒобавл€ем восклицательный знак в каждую строку

Next

'«аписываем преобразованные строки в файл:

Open App.Path & " \f.txt" For Output As #1 'ќткрыть дл€ записи под номером 1 файл f.txt из папки проекта

For i = 1 To 10

Print #1, s(i) '«апись очередной строки в файл

Next

Close #1 '«акрыть файл 1

End Sub

¬ы видите, что в этой программе запись осуществл€етс€ оператором Print, а не Write. »наче бы строки в результирующем файле брались в кавычки, как это было в задаче 2.

“аким образом, оператор Print примен€етс€ дл€ вывода не только на монитор, но и в файл.

 

«адача 5: ¬ам нужно прочесть все строки файла, а сколько строк в файле вы не знаете.

¬аши действи€: ¬ этом случае оператор цикла For не подойдет, так как там нужно указывать точное число строк. ’орошо бы Ѕэйсику можно было приказать: " „итай, пока файл не кончилс€". » такой приказ есть. ¬ его основе лежит функци€ EOF (End of File), котора€ в процессе последовательного считывани€ файла все врем€ " чувствует", кончилс€ ли он, и если кончилс€, принимает значение True, иначе - False.

”пом€нутый приказ реализуетс€ фрагментом:

Do While Not EOF(1) '¬ыполн€й, пока Ќ≈ наступил  ќЌ≈÷ ‘ј…Ћј 1

Line Input #1, s(i)

i = i + 1

Loop

 

ј теперь на примере примитивной задачи продемонстрируем, как программа может сохран€ть нужные ей данные, чтобы в следующий раз воспользоватьс€ ими:

«адача 6: ѕусть в файле ƒанные.txt записано число 10. ѕосле запуска программа должна раз в секунду печатать последовательные целые числа, начина€ с числа, записанного в этом файле. Ѕольше ничего делать ей не нужно. ѕонаблюдав некоторое врем€ за печатью чисел, вы завершаете выполнение проекта. ¬с€ соль задачи в том, чтобы при следующем запуске программа начала печатать не с 10, а с того числа, на котором завершилс€ проект.

¬аши действи€:

1. ¬ам необходимо сделать так, чтобы при запуске программы число считывалось из файла и счет начиналс€ с него.

2. ¬ам необходимо сделать так, чтобы при завершении работы последнее из напечатанных чисел записывалось в файл на место дес€тки. “огда в следующий раз счет сам собой начнетс€ с него.

—оздайте таймер. Ќастройте его интервал на 1 секунду.

ѕрограмма:

Dim „исло As Integer

 

Private Sub Form_Load()

Open App.Path & " \ƒанные.txt" For Input As #1 'ќткрыть дл€ чтени€ под номером 1 файл ƒанные.txt из папки проекта

Input #1, „исло '„тение числа, с которого начать счет

Close #1 '«акрыть файл є1

End Sub

 

Private Sub Timer1_Timer() 'ѕроцедура таймера, выполн€ема€ раз в секунду

Debug.Print „исло 'ѕечать числа

„исло = „исло + 1 'ѕолучаем следующее число

End Sub

 

Private Sub Form_Unload(Cancel As Integer)

Open App.Path & " \ƒанные.txt" For Output As #1 'ќткрыть дл€ записи под номером 1 файл ƒанные.txt из папки проекта

Write #1, „исло '«апись в файл числа, на котором закончен счет

Close #1 '«акрыть файл є1

End Sub

«десь € использовал событие Form_Unload. ќно так же, как и событие Form_Terminate, наступает при завершении работы проекта нажатием на крестик в правом верхнем углу формы. ƒл€ нас между этими событи€ми нет разницы.

 

 роме файлов с последовательным доступом существуют еще файлы с произвольным доступом. »нформаци€ в этих файлах записываетс€ упор€доченно и регул€рно, благодар€ чему к ней возможен более гибкий и быстрый доступ. Ќа них мы останавливатьс€ не будем.

 

«адание 127: —оздайте игру " ”гадай число".  омпьютер загадывает число из диапазона от 1 до миллиарда. „еловек должен его отгадать. ѕричем за наименьшее число попыток. ѕри каждой попытке компьютер печатает номер попытки, число, предложенное человеком, и подсказку - " мало " или " много ".

ѕоскольку даже у самых умных математиков на угадывание уйдет несколько дес€тков попыток, то в процессе угадывани€ может возникнуть желание сохранитьс€ до лучших времен. ѕри запуске игры в следующий раз компьютер должен спросить, начинать ли новую игру или продолжать старую. ≈сли старую, то компьютер должен распечатать все то, что было распечатано в прошлый раз - все номера попыток, числа, подсказки.

„то еще можно делать с файлами

Visual Basic может выполн€ть над файлами и папками те же действи€, что вы вручную выполн€ете в ѕроводнике Windows, а именно: создание папок, копирование, перемещение и уничтожение папок и файлов.

ѕусть у вас на диске c в папке temp расположены папки 222, 333, 666, 999 и файл 1.txt.

ƒействи€ над файлами:

ќператор —мысл
FileCopy" c: \temp\1.txt", " c: \temp\2.txt" ќператор FileCopy копирует файлы. ” него два параметра: первый - адрес копируемого файла, второй - адрес файла, в который производитс€ копирование. ¬ данном примере ‘айл 1.txt копируетс€ в свою же папку под именем 2.txt
FileCopy " c: \temp\1.txt", " c: \temp\222\4.txt" ‘айл 1.txt копируетс€ в папку c: \temp\222 под именем 4.txt
Name" c: \temp\222\4.txt" As " c: \temp\222\5.txt" ќператор Name As переименовывает и перемещает файлы и папки. ƒва его параметра имеют тот же смысл, что и у оператора FileCopy. ¬ данном примере ‘айл 4.txt переименовываетс€ в 5.txt и остаетс€ в своей папке.
Name " c: \temp\222\5.txt" As " c: \temp\5.txt" ‘айл 5.txt перемещаетс€ в папку temp.
Kill" c: \temp\5.txt" ќператор Kill уничтожает файл.

ƒействи€ над папками:

Name " c: \temp\333" As " c: \temp\444" ѕапка 333 переименовываетс€ в 444.
Name " c: \temp\666" As " c: \temp\222\666" ѕапка 666 перемещаетс€ вместе со всем своим содержимым внутрь папки 222.
MkDir" c: \temp\888" —оздаетс€ пуста€ папка 888.
RmDir" c: \temp\888" ”ничтожаетс€ пуста€ папка 888.

¬ программировании широко используетс€ пон€тие текущей папки. ¬ данный момент времени текуща€ папка может быть только одна. Ќазначьте текущей папку, с файлами которой вы в данный момент работаете, и запись адресов в операторах существенно сократитс€. Ќапример, работа€ в папке c: \temp\999, вы вместо того, чтобы все врем€ писать операторы вида

FileCopy " c: \temp\999\22.txt", " c: \temp\999\44.txt"

один раз задаете текущую папку, вот так:

ChDir " c: \temp\999"

а затем уже все врем€ пишете операторы такого вида:

FileCopy " 22.txt", " 44.txt"

‘ункци€ CurDir позвол€ет вам узнать, кака€ папка в насто€щий момент €вл€етс€ текущей. ƒл€ этого вам достаточно выполнить оператор Debug.Print CurDir.


ѕоделитьс€ с друзь€ми:

mylektsii.su - ћои Ћекции - 2015-2024 год. (0.028 сек.)¬се материалы представленные на сайте исключительно с целью ознакомлени€ читател€ми и не преследуют коммерческих целей или нарушение авторских прав ѕожаловатьс€ на материал