Часть 1/Часть 2/Часть 3/Часть 4/Часть 5/Часть 6/Часть 7/Часть 8/ Часть 9/Часть 10/Часть 11/Часть 12/Часть 13/Часть 14/Часть 15
В первой части я уже говорил об операте цикла со счетчиком, но тока
не подробно. А вот теперь будем базарить не тока об операторе цикла со
счетчиком, а операторе цикла с условием. Об операторе цикла со счетчиком я не
буду много говорить, т.к. все нужное я сказал в 1 части, НО если ты зациклился
на операторе цикла со счетчиком то почитай на моем сайте в разделе
статьи(Начинающим). Ну короче посмотри оператор цикла со счетчиком в первой
части(тока обязательно посмотри, т.к. он нам пригодится). А теперь по - базарим
о операторе цикла с условием.
Оператор цикла с условием имеет такой
синтаксис:
Do
Loop
Вот даже можешь сделать
прогу:
Private Sub Form_Load()
Do
MsgBox
"Цикл"
Loop
End Sub
Запусти(F5). Ну чо завис? Теперь тебя
спасет тока Ctrl+PauseBreak. Теперь мы подошли к сути этого шага - к условию!
Есть 2 вида условия это:
Do Until x = 0
MsgBox
"Цикл"
Loop
Если x <> 0 то цикл будет повторятся, до тех пор,
пока x = 0
и второй вид:
Do While x = 0
MsgBox
"Цикл"
Loop
Если x = 0 то цикл будет повторятся, до тех пор, пока x
<> 0(я использую тока этот вариант, и все примеры будут на нем)
Ну, это
вроде и все, тока старина Билл придумал еще и функцию DoEvents, она нужна чтоб
цикл не зацикливался. Ну чтоб все это понять сделаем прогу. На форму кинь
текстовое поле, и 2 кнопки(у первой Caption = "Пуск", у второй = "Стоп"). Вот
код:
Dim x As Long
Private Sub Command1_Click()
x = 0
Do
While x = 0 ' Если X = 0 то цикл
повторятся
DoEvents ' Это чтоб цикл не зациклился,
если ее не напишишь то комп будет виснуть
Text1.Text = Text1.Text +
1 ' Каждый раз когда цикл будет повторяться текст в текстовом
поле будет на 1 увеличиваться
Loop
End Sub
Private Sub
Command2_Click()
x = 1 ' При нажатии на кнопку цикл
останавливается
End Sub
Private Sub Form_Load()
x =
0
Text1.Text = 0
End Sub
Из этого примера видно что оператор цикла
повторяется быстрее чем таймер, а значит теперь можно сделать нормальный
PineBall, который не будет тормоза довать.
Скачать Исходник
На форму кинь кнопку(Enabled=False), и PictureBox(Enabled = False, и
Picture = "Картинка в виде мячика") и Text1(Enabled=False, Text = 0, Visible =
False). Код:
Dim MoveLeft As Boolean
Dim MoveRight As Boolean 'Тип Boolean озночает то что переменная может принемать тока 2
значения True и False
Dim MBall As Boolean
Private Sub
Form_KeyDown(KeyCode As Integer, Shift As Integer) 'При
нажатии на кнопку
If KeyCode = vbKeyF2 Then MoveBall 'Эсли нажата клав. F2 то запускаем шарик(т.е. функцию
MoveBall)
If KeyCode = vbKeyLeft Then 'Если нажата
стрелка влево то:
MoveRight = False 'Останавливаем(если он запущен) цикл, который биту перемещает в
противоположное место
Do While MoveRight = False 'Делаем цикл до тех пор пока MoveLeft = False
DoEvents
' Это чтоб система реагировала на
сигналы
Command1.Left = Command1.Left - 1 '
Перемещаем кнопку
Text1.Text = Text1.Text - 1 'Это
немного цикл тормозит, а то бита очень быстро перемещается
MoveBall
'Запускаем функцию MoveBall
Loop
End
If
' Сдесь тоже самое тока наоборот
If
KeyCode = vbKeyRight Then
MoveLeft = False
Do While MoveLeft =
False
DoEvents
Command1.Left = Command1.Left + 1
Text1.Text =
Text1.Text + 1
MoveBall
Loop
End If
'Остонавливаем
биту если нажата стрелка вниз
If KeyCode = vbKeyDown Then
MoveLeft
= True
MoveRight = True
Do
DoEvents
MoveBall
Loop
End
If
End Sub
Private Sub Form_Load()
'Устанавливаем
начальные значения
MoveRight = True
MoveLeft = True
MBall =
False
End Sub
Function MoveBall() 'Функция
MoveBall
If MBall = False Then 'Если MBall = False
то двигаем мячь вниз
Ball.Top = Ball.Top + 1
Else 'Если MBall <> False то двигаем мячь вверх
Ball.Top
= Ball.Top - 1
End If
If Ball.Left - Command1.Left < 150 And Ball.Left
- Command1.Left >= -320 And Ball.Top >= Command1.Top - 255 Then 'Если мячь ударяется от левый край биты то
MBall = True
'Посылаем его вверх
End If
End
Function
Все, остальное сам доделай. Если сделаешь то шли мне на мыло, я
помещю исходник на сайт в раздел Исходники.
Недоделанный Исходник качай сдесь
FSO - это расширенные возможности работы с файлами, папками и
дисководами. С помощью FSO можно создовать папки(и файлы), удалять, копировать,
перемищать, смотреть дату создания, изменения... Короче до хрена возможностей.
В FSO есть 4 объета:
Drive - это всякие дисководы, логические,
физические, присоедененные диски, и им подобные
Folder - это
папки
File - это файлы
FileSystemObject - это основной
объект группы, с полными методами, которые позволяют проводить операции над
файлами, папками...
Ну короче не буду тянуть, чтобы его подключить к
проэкту нажми на Проэкт(Project)>>Ссылки(Reference), найди там библиотеку
Microsoft Scriptig Runtime, и отметь ее. Пока все. В следующем шаге начнем с ней
работать, а это было чо то типо введения.
Подключи библиотеку Microsoft Scriptig Runtime(как это делать смотри
выше).
Чтобы создать объект FileSystemObject, надо объявить переменную как
объект FSO:
Dim fso As New FileSystemObject
Все, объект создан. Теперь
чтобы получить объект к файлу, папке, дисководу существует метод Get:
GetFile - к файлу
GetFolder к папке
GetDrive - к
дискооду
Например, щас мы получим доступ к папке:
Dim f As File ' Прежде чем присваивать, надо объявить переменную. Если ты
работаешь с папками то Folder, если с файлами, то File, если с дисководом то
Drive
Set f = fso.GetFile("c:\1") ' Присваевываем к
переменной f доступ к папке(ил не доступ, я вообще в этих словах
запутался)
Ну пока все, теперь переходим к практике.
Подключи библиотеку Microsoft Scriptig Runtime, на форму кинь 4
кнопки, 6 меток. Щас мы сделаем прогу, которая будет создовать, удалять,
копировать, перемещать, выводить размер, дату создания.... Пример я представлял
двумя способами, ты можешь использовать какой хочешь. Код:
Dim fso As New
FileSystemObject, f As Folder ' Создаем объект FSO и объявляем
переменную f для работы с папками
Private Sub
Command1_Click()
fso.CreateFolder ("c:\111111") ' Для
создания папки есть метод CreateFolder
End Sub
Private Sub
Command2_Click()
' Способ 1
Set f =
fso.GetFolder("c:\111111")
f.Delete True
' Способ
2
'fso.DeleteFolder ("c:\111111")
End Sub
Private Sub
Command3_Click()
' Способ 1
Set f =
fso.GetFolder("c:\111111")
f.Copy "c:\games\"
' Способ
2
'fso.CopyFolder "c:\111111", "c:\games\"
End Sub
Private
Sub Command4_Click()
' Способ 1
Set f =
fso.GetFolder("c:\111111")
f.Move "c:\games\" ' Тока не
забывай в самом конце папки ставить "\", а то при перемещении и копировании не
сработает
' Способ 2
'fso.MoveFolder
"c:\111111", "c:\games\"
End Sub
Private Sub Form_Load()
' Узнаем есть папка 111111, если нет то сообщаем(метод возвращает
False), а если есть то выводим все данные о ней(метод возвращает
True)
If fso.FolderExists("c:\111111") = True Then
Set f =
fso.GetFolder("c:\111111")
' Дата
создания
Label1.Caption = "Файл создан:" & f.DateCreated
' Дата изменения
Label2.Caption = "Файл изменен: " &
f.DateLastModified
' Дата открытия
Label3.Caption
= "Файл открыт:" & f.DateLastAccessed
' Имя папки
родителя
Label4.Caption = "Папка родичь(т.е. та папка в которой эта
папка находится): " & f.ParentFolder
' Путь к
папке
Label5.Caption = "Путь: " & f.Path
'
Размер
Label6.Caption = "Размер: " & f.Size / 1024 ' Сдесь я написал / 1024, чтоб в килибайты
перевести
Else
MsgBox "Такой папки не существует", 16,
""
End If
End Sub
По началу может показаться что пример сложный,
т.к. много всяких новых методов, НО не обязательно их помнить(ты чо думаешь что
я их все наизусть знаю?), просто ставишь имя переменной(сдесь f), потом точку, и
у тебя список выподает, в нем всего штук 10 методов, а по названию можно
определить нужный. Исходник качай Отсюда
С помощью FSO можно узновать полную инфу о сидиках и им подобных.
Вот код(тока не забывай подключать библиотеку для работы с FSO):
Dim fso
As New FileSystemObject, D As Drive
Private Sub Form_Load()
Set D =
fso.GetDrive("c:") ' Узнаем есть диск в сидюке(ил подключен
диск) ил нету. Если есть то метод возращает True, если нет то False
If
D.IsReady = True Then
Label1.Caption = "Всего места: " &
D.TotalSize / 1024 / 1024 / 1024 ' Узнаем кол - во свободного
места, сдесь я написал / 1024 / 1024 / 1024 - это перевод из байтов в
гигобайты
Label2.Caption = "На диске свободно: " &
D.AvailableSpace / 1024 / 1024 / 1024 ' Узнаем кол - во
свободного места, сдесь я написал / 1024 / 1024 / 1024 - это перевод из байтов в
гигобайты(можно использовать и FreeSpace, эффект такой же)
' чтобы узнать сколько занято надо от кол- ва места на диске отнять
кол - во свободного места
Label3.Caption = "На диске занято: " &
(D.TotalSize - D.AvailableSpace) / 1024 / 1024 / 1024
Label4.Caption =
"Буквенное обозначение диска: " & D.DriveLetter ' Узнаем
буквенное обозначение диска
Label5.Caption = "Файловая система: "
& D.FileSystem ' Узнаем файловую
систему
Label6.Caption = "серийный номер: " & D.SerialNumber ' Узнаем серийный номер диска
Else '
Если сидюк недоступен, то выводим сообщение
MsgBox "Сидюк не
доступен"
End If
End Sub
Исходник качай Отсюда
На форму кинь текстовое поле(MultiLine = True), 4 кнопки(у 1ой
Caption = "Создать txt", у 2ой = "Удалить", у 3ей = "Запись", у 4ой = "Чтение").
Размести библиотеку для работы с FSO. Код:
Dim fso As New
FileSystemObject, f As File, txt As TextStream ' Тип
TextStream нужен для работы с текстовыми файлами, тока не путай его с File(это
для работы со всеми файлами)
Private Sub Command1_Click()
Set
txt = fso.CreateTextFile("c:\1.txt") ' Создаем текстовой
файл
End Sub
Private Sub Command2_Click()
fso.DeleteFile
("c:\1.txt") ' Удаляем текстовой файл
End
Sub
Private Sub Command3_Click()
Set f = fso.GetFile("c:\1.txt") ' Получаем доступ к файлу
Set txt =
f.OpenAsTextStream(ForWriting) ' Открываем(в скобках это тип
записи(ну как и у оператора Open); ForAppending - Добавление записей к уже
существующем в файле(тоже самое что и Append в операторе Open); ForWriting - это
запись по новому(тоже что и Output у оператора Open) ; ForReading - это для
чтения файлов(тоже что Input у Open`a))
txt.Write (Text1.Text) ' Записываем в файл содержимое текстового поля(можно использовать и
метод WriteLine)
txt.Close ' Закрываем
End
Sub
Private Sub Command4_Click()
Set f = fso.GetFile("c:\1.txt") ' Получаем доступ к файлу
Set txt =
f.OpenAsTextStream(ForReading) '
Открываем
Text1.Text = txt.ReadLine ' Читаем
содержимое файла в текстовое поле
txt.Close '
Закрываем
End Sub
У текстовых файлов почти такие же свойства и
методы как и у папок(узнать размер, путь, имя...), так же как и папки их можно
копировать и перемещать, поэтому я не буду про это писать. Тут ни чего сложного
нет. А вот задание:
Короче добавь к этому примеру еще 2 кнопки(Копировать и
Переместить), и напиши код для копирования и перемещения текстового файла.
Исходник качай Отсюда
Ну для начала я расскажу для чего это вообще нужно. Вся эта фигня
нужна для того чтоб устанавливать связь между двумя разными приложениями
(Клиентом & Сервером), например мы будем делать проект, в котором будет 2
проги (Клиент & Сервер), изменив текст в Сервере он, изменится и в Клиенте
(Ты наверное думаешь: "Нахрен мне это надо?" - это тебе надо! Когда мы будем
делать Chat(через пару шагов (Пока я взял чей - то перевод, но в следующих
обновлениях я постараюсь сам написать о создании Chat`a, да и вообще о
Winsock))).Для начала создадим Сервер, он будет посылать сообщения
Клиенту.
Создаем Сервер
Войди в VB(Standart EXE), на форму кинь
текстовое поле. Переименуй проект в Server( для этого войти в Project/Project1
Properties... и в открывшемся окне, в поле Project Name - введи любое имя.
(подробнее читай в 26 Шаге), форму переименуй в Servak(Name), свойство LinkMode
= 1 - Source, LinkTopic = Client - это имя формы клиента.
Сервак готов!!! Теперь сделаем Клиента.
Создаем Клиент
Войди в VB(Standart EXE), на форму кинь текстовое
поле. Форму переименуй в Client, и введи код:
Private Sub
Form_Load()
Text1.LinkTopic = "Server|Client" 'Здесь Server
это имя проекта Сервера (мы вроде так его назвали?), а Client - имя формы
клиента
Text1.LinkItem = "Text1" 'Имя Текстового
поля Сервера
Text1.LinkMode = 1 '1 - означает
Автомат (не в прямом смысле:-))), т.е. при изменение текста в Сервере, в Клиенте
тоже будет меняться (Автоматом)
End Sub
Теперь запускай сервер, а
потом клиент. При изменение текста в сервере, в клиенте он тоже изменится. Это
была подготовка к созданию таково же приложения только на разных компах (через
инет).
Исходник проги качай Отсюда
Почти все проги содержат справку, в ней написанно как с прогой
работать. В следующих шагах мы будем создовать хелп, и внедрять в свои
проги.
Есть 2 вида хелпа:
Первый создается с помощью спец. компилятора
CHM, его ты можешь скачать с моего сайта в разделе проги. Этот компилятор
преобразовывает файлы написанные на HTML в CHM.
Второй вид хелпа создается
при помощи проги Help Workshop, она постовляется вместе с VB(у меня она
находиться в Пуск>>Программы>>Microsoft Visual Studio
6.0>>Microsoft Visual Studio 6.0 Tools>>HelpWorkShop). (Ил
можешь найти прогу HCW.exe).
Тока для создания этого хелпа тебе еще
понадобиться прога Microsoft Word 98 и выше(она с офисом постовляется), если нет
Worda, то подайдет любой RTF редактор.
Для начала скачай с моего сайта(vbstreets.narod.ru в разделе
Проги) прогу - Компилятор CHM, и создай страницу(если не знаешь
как, то ищи справочник по HTML). Открой прогу, нажми на кнопку Обзор
напротив поля Web-страничка(in). Выбери страницу(*.htm ил *.html), и
нажми на OK. Теперь жми на кнопку Собрать. И все! Справка создана!
автор учебника: Падре
P.S. В этой проге можно еще и делать обратную операцию, т.е. из CHM в HTML.
Дата создания: 22 мая 2003
года
Место под Банеры |
![]() |